문제
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 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]
알고리즘은 다음과 같습니다.
- emergency 배열을 오름차순으로 정리합니다. 오름차순으로 정리하게 되면 큰 숫자, 응급도가 높은 숫자부터 낮은 숫자까지 정리됩니다.
- 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 |