code/[프로그래머스] python

[코딩 테스트 연습 입문] 진료순서 정하기

오리는짹짹 2022. 12. 25. 00:48

문제

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

 

❗제한사항

  • 중복된 원소는 없습니다.
  • 1 ≤ emergency의 길이 ≤ 10
  • 1 ≤ emergency의 원소 ≤ 100

 

입출력 예

 

입출력 예 설명

입출력 예 #1

  • emergency가 [3, 76, 24]이므로 응급도의 크기 순서대로 번호를 매긴 [3, 1, 2]를 return합니다.

입출력 예 #2

  • emergency가 [1, 2, 3, 4, 5, 6, 7]이므로 응급도의 크기 순서대로 번호를 매긴 [7, 6, 5, 4, 3, 2, 1]를 return합니다.

입출력 예 #3

  • emergency가 [30, 10, 23, 6, 100]이므로 응급도의 크기 순서대로 번호를 매긴 [2, 4, 3, 5, 1]를 return합니다.

 

✔풀이

def solution(emergency):
    answer = []
    max_emergency=[]

    for i in range(len(emergency)):
        max_emergency.append(emergency[i]) 

    max_emergency.sort(reverse=True)

    for i in range(len(emergency)):
        plus = max_emergency.index(emergency[i])
        answer.append(plus+1)

    return answer

📝설명

answer의 순서를 크기 순으로 배열해야 하기 때문에 새로운 리스트 max_emergency를 만들었다.

for문을 이용해서 우선 max_emergency에 emergency와 동일한 순서의 배열을 집어넣었고, 

sort(reverse=True)로 크기가 점점 작은수 순서대로 재배열했다.

다시 for문을 이용해서 answer을 만들어 낼 것이다.

이 때, plus라는 변수에 .index()를 이용해서 emergency의 배열 순서대로 max_emergency에 위치한 인덱스를 찾는다.

그리고 나서 그 인덱스에 +1 한 수를 answer리스트에 추가하면 끝! 

 

👑모범 답안

🔎sorted(리스트, reverse=True)를 사용했다.

 

👀느낀 점

: sorted()에 대해서 알게 되었다. 

코드 길이 차이가 엄청나서 당황스럽지만^^ 

내 코드를 저렇게 줄일 수 있다는 거니까!! 

포기하지 않고 노력할테다.