문제

외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return 하도록 solution 함수를 완성해주세요.

답안

# emergency = [3, 76, 24]
def solution(emergency):
    sorted_em = sorted(emergency, reverse=True)
    return [sorted_em.index(em_score) + 1 for em_score in emergency]

알고리즘은 다음과 같습니다.

  1. emergency 배열을 오름차순으로 정리합니다. 오름차순으로 정리하게 되면 큰 숫자, 응급도가 높은 숫자부터 낮은 숫자까지 정리됩니다.
  2. emergency에는 숫자가 정렬되지 않아 em_score에는 3부터 오게 되는데 이 때 3의 인덱스는 오름차순으로 정리했을 때 마지막에 위치해있어 가장 큰 숫자가 나오게 됩니다. 반면 76은 오름차순 리스트에서 가장 앞에 위치해 있어 가장 작은 인덱스를 가지게 됩니다.

개인적으로 이 문제의 난이도가 높게 느껴졌습니다. 인덱스를 사용해서 문제를 해결하는 것은 이해했으나 코드로는 어떻게 구현해야 할지 감이 오지 않았습니다. 이 문제를 여러 번 복습해야겠습니다.

'Coding Test' 카테고리의 다른 글

[java] 중복된 문자 제거  (0) 2024.07.01
[python] 구슬을 나누는 경우의 수  (0) 2023.03.08
[python] 외계행성의 나이  (0) 2023.03.07
[python] 짝수 홀수 개수  (0) 2023.03.06
[python] 피자 나눠 먹기(3)  (0) 2023.03.03

+ Recent posts