코스개수를 순회하면서 주문할 수 있는 개수에 따른 combination을 만들어주고 가장 많이 나온 아이를 answer에 넣어주는 방법.
from itertools import combinations
from collections import Counter
def solution(orders, course):
answer = []
for c in course:
temp = []
for order in orders:
combi = combinations(sorted(order), c)
temp += combi
counter = Counter(temp)
if len(counter) != 0 and max(counter.values()) != 1:
answer += [''.join(f) for f in counter if counter[f] == max(counter.values())]
return sorted(answer)
JavaScript
function solution (orders, course) {
const ordered = {};
const candidates = {};
const maxNum = Array(10 + 1).fill(0)
const createSet = (arr, start, len, foods) => {
if (len == 0) {
ordered[foods] = (ordered[foods] || 0) + 1;
if (ordered[foods] > 1) candidates[foods] = ordered[foods]
maxNum[foods.length] = Math.max(maxNum[foods.length], ordered[foods])
return
}
for (let i = start; i < arr.length; i++) {
createSet(arr, i+1, len-1, foods + arr[i])
}
}
orders.forEach((order) => {
const sorted = order.split('').sort()
course.forEach((len) => {
createSet(sorted, 0, len, '')
})
})
const launched = Object.keys(candidates).filter((food) => maxNum[food.length] === candidates[food])
return launched.sort()
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
2022 KAKAO TECH INTERNSHIP | 코딩 테스트 공부 (0) | 2022.09.04 |
---|---|
2022 KAKAO TECH INTERNSHIP | 두 큐 합 같게 만들기 (0) | 2022.09.03 |
[2021 카카오 채용 연계형 인턴십] 거리두기 확인하기 (0) | 2022.04.30 |
[Summer/Winter Coding(~2018)] 지형 편집 (1) | 2022.02.20 |
[2022 KAKAO BLIND RECRUITMENT] 양과 늑대 (0) | 2022.02.19 |