728x90
설명
풀이
id와 priority를 가진 Person 클래스를 만든다.
priority를 입력받을 때, Queue에 Person 클래스를 담아 입력받는다.
핵심 로직은 다음과 같다.
초기 answer 값은 0이다.
큐가 비어있지 않는 동안 계속 진행한다.
- 한 명의 환자를 큐에서 꺼낸다.
- 큐를 순회하면서, 방금 꺼낸 한 명의 환자보다 우선순위가 높은 환자가 있는지 조사한다.
- 현재 환자의 우선순위보다 높은 우선순위를 가진 환자가 있다면
- 현재 환자를 큐의 제일 끝에 다시 넣는다.
- 현재 환자를 비도록 한다.
- 반복문을 멈춘다.
- 반복문이 끝났는데 현재 환자가 null이 아니라면
- answer를 1 증가시킨다.
- 현재 환자가 찾고자 하는 환자인지 확인한다.
- 맞다면 그대로 answer를 리턴한다.
answer를 리턴한다.
코드
package inflearn._5_8;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
class Person {
int id;
int priority;
public Person(int id, int priority) {
this.id = id;
this.priority = priority;
}
}
public class Main {
public static int solution(int n, int m, Queue<Person> queue) {
int answer = 0;
while(!queue.isEmpty()) { // 큐가 비어있지 않다면 계속 진행
Person tmp = queue.poll(); // 현재 환자
for(Person x : queue) {
if (x.priority > tmp.priority) { // 현재 환자보다 높은 우선순위의 환자가 있다면
queue.offer(tmp);
tmp = null;
break;
}
}
if (tmp != null) { // 진료 받을 수 있음
answer++;
if (tmp.id == m) return answer; // 현재 환자의 아이디와 찾고자 하는 아이디가 같다면 리턴
}
}
return answer;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
Queue<Person> queue = new LinkedList<>();
st = new StringTokenizer(br.readLine(), " ");
for(int i = 0; i < n; i++) {
queue.offer(new Person(i, Integer.parseInt(st.nextToken())));
}
bw.write(sb.append(solution(n, m, queue)).toString());
bw.flush();
bw.close();
br.close();
}
}
728x90
'Coding Test Inflearn' 카테고리의 다른 글
[정렬] 중복 확인 (0) | 2024.05.09 |
---|---|
[정렬] Least Recently Used (0) | 2024.05.08 |
[자료구조] 교육과정설계 (0) | 2024.04.29 |
[자료구조] 공주구하기 (1) | 2024.04.25 |
[자료구조] 쇠막대기 (1) | 2024.04.25 |