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()에 대해서 알게 되었다.
코드 길이 차이가 엄청나서 당황스럽지만^^
내 코드를 저렇게 줄일 수 있다는 거니까!!
포기하지 않고 노력할테다.