반응형
1. 문제
https://school.programmers.co.kr/learn/courses/30/lessons/72411
2. 코드
function solution(orders, course) {
let map = new Map(); // 해시 맵에 조합 및 해당 조합이 나온 갯수 저장
let set = new Set(); // 각 orders 요소에 대한 조합 만들 때 중복 제거
let best = new Array(course.length).fill(0); // 조합 길이 별 조합 갯수 최댓값 저장
let answer = []; // 최종 코스요리 모음
// 각 orders에 대한 조합 만들기
const makeC = (arr,str) => {
if(course.includes(str.length)){
map.set(str, map.get(str) + 1 || 1);
if(best[course.indexOf(str.length)] < map.get(str))
best[course.indexOf(str.length)] = map.get(str);
}
for(let i=0;i<arr.length;i++){
let newStr = (str + arr[i]).split("").sort().join("");
let newArr = arr.slice();
newArr.splice(i,1);
if(!set.has(newStr)){
set.add(newStr);
makeC(newArr, newStr);
}
}
}
for(let i=0;i<orders.length;i++){
makeC(orders[i].split(""),"");
set = new Set();
}
// 각 조합의 갯수가 해당 조합의 길이 조합 리스트 중 최댓값에 해당할 경우
for(let [k,v] of map){
if(v >= 2 && v === best[course.indexOf(k.length)]) answer.push(k);
}
return answer.sort();
}
역시 빡구현 문제.. 그래도 빡구현 문제에 점점 익숙해져서 좋다! 처음으로 내 손으로 정답을 얻은 빡구현 문제 :)
반응형
'프로그래머스 > 구현' 카테고리의 다른 글
[투포인터] 프로그래머스 '보석 쇼핑' - js (1) | 2023.05.09 |
---|---|
[투포인터] 프로그래머스 '두 큐 합 같게 만들기' - js (0) | 2023.05.08 |
[구현] 프로그래머스 '불량 사용자' - js (0) | 2023.05.05 |
[구현] 프로그래머스 '124 나라의 숫자' - js (0) | 2023.05.03 |
[구현] 프로그래머스 '삼각 달팽이' - js (0) | 2023.05.02 |