Lecture5_8
11132 ワード
// 각 환자에 대한 객체를 만들기 위함
class Person {
// 처음 받은 차트상에서의 번호
int id;
// 위험도
int priority;
public Person(int id, int priority) {
this.id = id;
this.priority = priority;
}
}
// 강의 내용
public class Lecture5_8 {
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()) {
// 현재 차례의 환자를 tmp에 넣기
Person tmp = Q.poll();
// 현재 환자와 남은 환자 비교하기 위한 반목문
for (Person x : Q) {
// 현재 차례의 환자보다 차트상의 환자 중 위험도가 높은 환자가 존재한다면
if (x.priority > tmp.priority) {
// 현재 환자를 다시 맨 뒤의 순서로 보낸다
Q.offer(tmp);
// tmp 초기화
tmp = null;
// 반복문 종료
break;
}
}
// 만약 현재 환자가 가장 높은 위험도라면
if (tmp != null) {
// 진료를 본 후 보내고 answer++ 한다
answer++;
// 방금 진료를 본 환자의 번호가 m이라면 그 때의 answer를 리턴한다
if (tmp.id == m) return answer;
}
}
// 0 <= m < n의 조건이 맞지 않다면 아래의 결과값은 m이다
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));
}
}
Reference
この問題について(Lecture5_8), 我々は、より多くの情報をここで見つけました https://velog.io/@ikerbm94/Lecture58テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol