데이터 꿈나무

[코딩 테스트] 프로그래머스_진료 순서 정하기(Python)_sorted, reverse, append 본문

Activity/Algorithm

[코딩 테스트] 프로그래머스_진료 순서 정하기(Python)_sorted, reverse, append

ye_ju 2023. 2. 10. 10:36

문제 설명

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

 

제한사항

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

 

입출력 예

emergency result
[3, 76, 24] [3, 1, 2]
[1, 2, 3, 4, 5, 6, 7] [7, 6, 5, 4, 3, 2, 1]
[30, 10, 23, 6, 100] [2, 4, 3, 5, 1]

 

입출력 예 설명

입출력 예 #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 = []
    a = sorted(emergency)  
    a.reverse()  
   
    for i in emergency:
        answer.append(a.index(i)+1)
        
    return answer

 코드 설명은 위의 입출력 예 첫번째 예시값을 가지고 설명하겠습니다.

 

  1.  answer이라는 이름으로 빈 리스트를 만들어 줍니다. 여기에 나중에 입출력 예시에 있는 result 값이 들어가게 됩니다.
  2.  emergency의 크기가 큰 순서대로 응급도가 높은 것이기 때문에 우리는 큰 순서대로 정렬을 해야 합니다. 그래서 작은 수부터 정렬하는 함수인 sorted를 사용하여 정렬해줍니다. 예를 들어, [3, 24, 76]이 되는 것입니다. 그것을 a에 저장해줍니다. 
  3.  이렇게 정렬한 리스트의 요소를 거꾸로 뒤집기 위해 reverse 함수를 사용하여 [76, 24, 3]과 같은 형태로 만들어 줍니다.
  4.  다음으로 반복문을 사용하여 emergency의 요소들이 하나씩 i에 넣어주면서 반복을 하게 해줍니다.
  5.  a.index(i)+1는 a에서 index(i)가 있는 인덱스를 찾아주고 거기에 1을 더해달라는 코드입니다. 예를 들어, 반복문이 돌면서 emergency에 있는 요소들이 하나씩 i에 들어가게 되어 반복 코드는 a.index(3)+1, a.index(76)+1, a.index(24)+1 이렇게 진행되게 됩니다. 그러면 a에서 숫자 3요소가 있는 인덱스를 찾아 주겠죠? 그 값은 2인데 인덱스는 0부터 시작하기 때문에 1을 더해줘서 3이됩니다.
  6. 이렇게 진행한 것을 빈리스트인 answer에 append함수를 사용하여 붙여줍니다.
  7. 그러면 emergency의 응급도가 높은 순서대로 진료 순서가 나오게 됩니다.

 


이해가 잘 되셨을지 모르겠네요~ 저도 처음에는 조금 헷갈렸었답니다ㅎㅎ 질문있으시다면 댓글 남겨주세요! 

감사합니다!! 

 

Comments