✔️내 답 -> 정답
근데 강의 조금 듣고 힌트 얻어서 풀었다.
여기서 중요한 것은 외부 클래스 Person을 만든 것인데
문제에서 주어진 처음 예시는 Person에 대한 필요성이 없지만
두번째 예시에서는 중복값이 존재하기 때문에 Person이라는 클래스가 필요하다.
import java.util.*;
public class Main{
public static int solution(int n, int m, int[] arr){
int answer=0;
Person target = new Person(m,arr[m]);
Queue<Person> q = new LinkedList<>();
for(int i=0;i<n;i++) {
q.add(new Person(i,arr[i]));
}
while(q.size()>0) {
if(q.peek().getId()!=target.getId()) {
boolean remove = turn(q,q.size());
if(remove==true) {
q.poll().getValue();
answer++;
}
else {
q.add(q.poll());
}
} else {
boolean remove = turn(q,q.size());
if(remove==true) {
q.poll().getValue();
answer++;
break;
}
else {
q.add(q.poll());
}
}
}
return answer;
}
public static boolean turn (Queue<Person> q, int n) {
boolean remove=true;
Person v = q.peek();
for(int i=0;i<n;i++) {
q.add(q.poll());
if(q.peek().getValue()>v.getValue()) remove=false;
}
return remove;
}
public static void main(String[] args){
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int m = kb.nextInt();
int[] arr = new int[n];
for(int i=0;i<n;i++) {
arr[i]=kb.nextInt();
}
System.out.println(solution(n,m,arr));
}
}
class Person{
int id;
int value;
Person(int id , int value){
this.id = id;
this.value=value;
}
int getId() {
return id;
}
int getValue() {
return value;
}
}
✔️ 강의 답은
만약에 우선순위가 큰게 있다면 바로 맨끝에 추가하기
순서가 기존과 다른게 엉망이지만 순서가 엉망이어도 답은 구할 수 있는 범우이이다.
import java.util.*;
class Person{
int id ;
int value;
Person(int id, int value){
this.id =id;
this.value = value;
}
}
class Main{
public static int solution(int n, int m, int[] arr){
int answer =0;
Queue<Person> Q = new LinkedList<>();
for(int i=0;i<n;i++) Q.offer(new Person(i,arr[i]));
while(!Q.isEmpty()) {
Person target = Q.poll();
for(Person x:Q) {
if(x.value>target.value) {
Q.offer(target);
target=null;
break;
}
}
if(target!=null) {
if(target.id==m) {
answer++;
return answer;}
else answer++;
}
}
return answer;
}
public static void main(String[] args){
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int m = kb.nextInt();
int[] arr = new int[n];
for(int i=0;i<n;i++) {
arr[i]=kb.nextInt();
}
System.out.println(solution(n,m,arr));
}
}