관리 메뉴

나만을 위한 블로그

[Algorithm] 프로그래머스 - 진료순서 정하기 (Kotlin) 본문

알고리즘 문제 풀이/프로그래머스

[Algorithm] 프로그래머스 - 진료순서 정하기 (Kotlin)

참깨빵위에참깨빵_ 2022. 12. 24. 21:14
728x90
반응형
응급실에 온 환자의 응급도를 기준으로 진료 순서를 정한다. 정수 배열 emergency가 매개변수로 주어질 때
응급도가 높은 순서대로 진료 순서를 정한 배열을 리턴하는 solution()을 완성하라

 

 

입출력 예의 result를 보면 숫자가 큰 순서대로 정렬하지 않는다. 그래서 먼저 주먹구구식으로 로직을 짜 봤다.

 

  1. 매개변수로 받은 배열을 복사해 둔다
  2. 복사한 배열을 내림차순 정렬(큰 숫자부터 출력되게)한다
  3. 복사된 후 정렬된 배열 vs 원본 배열을 비교해서 정렬된 배열의 값들이 원본 배열에선 어떤 위치에 있는지 찾는다
  4. 위치를 찾으면 그 인덱스에 +1을 한 다음 리턴한다.

 

그리고 이걸 코드로 옮긴 결과는 이렇다.

 

class Solution {
    fun solution(emergency: IntArray): IntArray {
        val list = emergency.copyOf()
        list.sortDescending()
        for (i in list.indices) {
            emergency[i] = list.indexOf(emergency[i]) + 1
        }

        return emergency
    }
}

 

3번의 비교해서 값들의 위치를 찾는 부분은 매개변수로 받은 emergency에 바로 때려박는 식으로 처리했다. 제출 결과 정답으로 인정됐고 이걸 어떻게 해야 더 짧은 코드로 바꿀 수 있을지 고민해봤는데 방법이 잘 나오지 않아서 다른 사람들의 풀이를 참고했다.

 

class Solution {
    fun solution(emergency: IntArray) = emergency.map {
        emergency.sortedDescending().indexOf(it) + 1
    }.toIntArray()
}

 

위에서 생각했던 로직이 그냥 한 줄로 끝난다. 먼저 주먹구구식으로 풀고 그 다음 map {}을 사용해서도 풀어봐야겠다.

반응형
Comments