[프로그래머스]진료 순서 정하기

뜨또·2024년 5월 20일
0

프로그래머스

목록 보기
2/2
post-thumbnail

문제 설명

외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 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합니다.

내가 제출한 코드

import Foundation

func solution(_ emergency:[Int]) -> [Int] {
    var result: [Int] = []
    
    for out in emergency {
        var cnt = 1
        for inner in emergency {
            if out < inner {
                cnt += 1
            }
        }
        result.append(cnt)
    }
    
    return result
}

몰랐거나 새로 알게된 점

처음에 생각했던 방법은
1. 주어진 배열을 정렬
2. 딕셔너리를 사용해서 키는 배열의 요소, 값으로는 인덱스를 순서대로 넣고
3. 다시 원래 배열의 순서대로 바꾼 다음, 값인 인덱스만 추출해서 배열로 만든다!
였지만 세번째 방법이 가능한가? 가능하다면 어떻게 하지? 라는 고민에 빠져 구글링했다..

구글링 해보니 다양한 방법이 있었단 사실에 놀랐고, 방법마다 시간 복잡도의 차이가 있다는 사실에 또 놀랐다.

그리고 다행인 것은 내가 처음에 생각했던 것과 비슷한 방법이 있었다.
비록 응용하는 능력이 아직 부족해서 내가 생각한 방법으로 끝까지 풀지 못했지만
틀린 방법이 아니였다는 점에 다행이란 생각이 들었다..

앞으로 더 어려운 문제를 풀게 되거나, 시간 복잡도를 신경써서 개발하는 상황이 반드시 올테니 열심히 공부하자..!


참고: https://upcurvewave.tistory.com/660

profile
멋있는 개발자(가 되고 싶은) 이갈

0개의 댓글