본문 바로가기
프로그래머스 문제풀어보기

[Lv.0] 진료 순서 정하기

by dantriss 2023. 3. 13.


https://school.programmers.co.kr/learn/courses/30/lessons/120835

 

위급도가 높은 순서대로 먼저 진료를 해야하기 때문에 위급도가 낮다면 순서가 뒤로 밀리게 된다.

그래서 배열 emergency안에 있는 숫자들을 비교해서 만약 해당 위치의 위급도가 다른위치의 위급도들보다 낮다면 숫자를 증가시키는 방향으로 진행하였다.

answer에는 emergency의 길이만큼을 선언/초기화 해주었고, 이중반복문을 활용해 0번째 위치에 있는 숫자와 마지막에 있는 숫자들을 비교하게 만들어준다.

emergency[i]의 값을 기준으로 해당 값이 emergency[j] 보다 작다면  위급도가 낮은것이기 때문에 해당 자리와 일치하는 answer의 숫자를 증감연산자를 이용해 1씩 증가한다.

그렇게 되면 아래의 사진처럼 가장 큰 숫자부터 0,1,2.... 라는 숫자를 가지게 될 텐데 가장 우선순위를 1로 지정해야 하기 때문에 

answer에 존재하는 모든 값들을 다른 값들고 비교가 끝났을때 증감연산자를 이용해 전체적으로 1씩 증가 시켜준다.

 

해당 위치의 숫자와 다른 위치의 숫자들 비교하고 증감연산자에 의해 1씩 증가해서 각 위험도에 따라 순서가 지정되게 된다.

 

class Solution {
    public int[] solution(int[] emergency) {
        int[] answer = new int[emergency.length];
        
        for(int i =0; i<emergency.length; i++){
                
            for(int j = 0; j<emergency.length; j++){
                
                if(emergency[i]<emergency[j]){
                    answer[i]++;    
                }
                
            }
            answer[i]++;
            
        }

        
        return answer;
    }
}

'프로그래머스 문제풀어보기' 카테고리의 다른 글

[Lv.0] 7의 개수  (0) 2023.03.19
[Lv.0] 공 던지기  (0) 2023.03.13
[Lv.0] 2차원으로 만들기  (0) 2023.03.10
[Lv.0] k의 개수  (0) 2023.03.07
[Lv.0] A로 B 만들기  (0) 2023.03.06

댓글