https://school.programmers.co.kr/learn/courses/30/lessons/72411
const combination = (idx, start, data, n, str, obj) => {
if (start === n) {
const str_tmp = data.join("");
obj[str_tmp] = ((obj[str_tmp]) || 0) + 1;
return obj;
}
for (let i = idx; i < str.length; ++i) {
data[start] = str[i];
obj = combination(i + 1, start + 1, data, n, str, obj);
}
return obj;
}
function solution(orders, course) {
orders = orders.map(el => [...el].sort().join(""));
return course.reduce((acc, n) => {
let [pivot, arr] = [0, []];
const result = orders.reduce((obj, str) => combination(0, 0, [], n, str, obj), {});
Object.entries(result).forEach(([key, value]) => {
if (value < 2 || value < pivot) return;
if (value > pivot) {
pivot = value;
arr.length = 0;
}
arr.push(key);
});
return acc.concat(arr);
}, []).sort();
}
'Coding Test > Programmers' 카테고리의 다른 글
[Programmers] (2018 KAKAO BLIND RECRUITMENT) Lv 2. [3차] 파일명 정렬 (0) | 2023.03.03 |
---|---|
[Programmers] Lv 2. 롤케이크 자르기 (0) | 2023.02.27 |
[Programmers] (깊이/너비 우선 탐색(DFS/BFS)) Lv 2. 게임 맵 최단거리 (0) | 2023.02.25 |
[Programmers] (2020 KAKAO BLIND RECRUITMENT) Lv 2. 괄호 변환 (0) | 2023.02.25 |
[Programmers] (탐욕법(Greedy)) Lv 2. 큰 수 만들기 (0) | 2023.02.25 |
댓글