Algorithm/inflearn

★응급실

마닐라 2021. 9. 19. 23:03

 

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;

class Person {
    int id;
    int priority;
    public Person(int id, int priority) {
        this.id = id;
        this.priority = priority;
    }
}


public class Main {
    public int solution(int n, int m, int[] arr) {
        int answer = 1;

        Queue<Person> Q = new LinkedList<>();

        //환자 번호와 위험도를 동시에 큐에 넣어야 하므로
        //번호와 위험도를 갖는 클래스를 만들어 그 객체를 큐에 넣는다.
        for(int i = 0; i < n; i++) {
            Q.offer(new Person(i, arr[i]));
        }
        //0번째 환자는 위험도가 60이므로 진료받으면 안됨 맨뒤로!
        //1번째 환자는 위험도가 50이므로 진료받으면 안됨 맨뒤로!
        //2번째 환자는 위험도가 70이므로 진료받으면 안됨 맨뒤로!
        //3번째 환자는 위험도가 80이므로 진료받으면 안됨 맨뒤로!
        //4번째 환자는 위험도가 90이므로 진료를 받지만 m번째가 아니므로 answer++
        //다시 0번째 환자 맨뒤로! 1번째 맨뒤로! 2번째 맨뒤로!
        //3번째 환자는 위험도가 80 진료를 받지만 m번째가 아니므로 answer++
        //0번째 맨뒤로! 1번째 맨뒤로! 2번째 환자 진료! answer(3)를 리턴!
        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) {
                //그 때 m번째 환자 인지 확인 하고
                if(tmp.id==m) return answer;
                    //m번째 환자가 아니면 번째를 증가시켜준다.
                else 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.print(T.solution(n, m, arr));
    }

'Algorithm > inflearn' 카테고리의 다른 글

버블정렬  (0) 2021.09.20
#선택 정렬  (0) 2021.09.20
교육과정설계  (0) 2021.09.19
공주 구하기  (0) 2021.09.19
★쇠막대기  (0) 2021.09.19