[프로그래머스] 메뉴 리뉴얼 (Swift)
https://programmers.co.kr/learn/courses/30/lessons/72411
풀이
Dictionary 의 특성들을 적극 활용해서 해결한 문제였습니다.
주문들을 주어진 길이만큼 조합하여 그 중 가장 빈도수가 많은 메뉴를 골라내는 문제입니다. 주의해야할 점은 메뉴도, 그리고 결과를 담은 배열도 모두 정렬되어있어야 한다는 점입니다.
일단 몇가지 메뉴를 조합해야하는지 숫자가 주어지기 때문에 이를 살펴봤습니다. 주어지는 배열 course
의 원소만큼 메뉴를 재조합해야 합니다.
이 때 주어지는 메뉴들을 담은 배열 orders
원소의 길이가 course
의 어떤 원소의 크기보다 작을 수 있다는 점을 생각해야 합니다.
예를 들어 orders
에 "ABC"
라는 원소가 하나 있다고 하고, course
에 4 라는 값이 있다면 어떤 방식으로든 재조합이 불가능하기 때문에 해당 경우는 건너뛰는 것이 좋습니다.
결론적으로 orders
의 원소 길이가 course
의 원소 크기 이상인 경우에만 조합 메소드를 사용해주면 됩니다. 조합으로 인해 도출된 결과는 Dictionary 의 key 로 삼고, value 는 0부터 하나씩 증가시키며 등장 빈도를 저장합니다.
이후 모든 과정이 끝나면 course
의 각 개수마다 Dictionary 를 분리하여 가장 큰 value 를 찾고, 해당 value 를 가지는 key 들을 모아줬습니다.
마지막으로 모아둔 key 들을 정렬해주면 문제를 해결할 수 있습니다.
코드
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 셔틀버스 (Swift) (0) | 2022.06.06 |
---|---|
[프로그래머스] 광고 삽입 (Swift) (0) | 2022.05.22 |
[프로그래머스] 가장 먼 노드 (Swift, Java) (0) | 2022.05.21 |
[프로그래머스] 다리를 지나는 트럭 (Swift) (0) | 2022.05.21 |
[프로그래머스] 네트워크 (Swift) (0) | 2022.05.15 |