import java.util.*;
class Person{
int id;
int priority;
public Person(int id,int priority) {
this.id=id;
this.priority=priority;
}
}
class Main {
public 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 tmp = q.poll();
for(Person x : q) {
if(x.priority > tmp.priority) {
q.offer(tmp);
tmp = null;
break;
}
}
if(tmp != null) {
answer++;
if(tmp.id == m) return answer;
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
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(T.solution(n,m,arr));
}
}
Person에 id와 priority를 인스턴스 변수로 선언하고,
Person을 데이터타입으로 갖는 Queue에 id값과 우선순위를 넣었다.
만약, poll한 값보다 우선순위가 더 높은 값이 Queue에 존재하면,
그 값은 다시 Queue에 넣는다.
그리고 현재값은 null로 지정해준다.
만약, 현재값이 null이 아닌채로 for문이 끝난다면,
현재값이 가장 우선순위가 높은것이기 때문에,
진료가 가능하다는 뜻이고, 1명의 환자가 나간다.(answer++)
이 과정을 거치면서 만약 m번째 환자가 나간다면, 그때의 answer가 m번째 환자의 진료순서가 된다.
클래스를 생성해서 인스턴스 변수로 두개의 값을 다루는것은 익숙치않아서 어려웠다. 많이 공부하자!