문제
https://school.programmers.co.kr/learn/courses/30/lessons/72411
풀이
※ Javascript는 var, let, const 키워드 없이 변수 선언이 가능하고 이 경우 전역 변수로 취급된다.
- course를 배열을 순회하면서 해당 숫자에 해당하는 코스요리가 가능한지 알아본다. 이 때 각 orders에서 몇 개의 코스요리가 나오는지 DFS로 재귀함수를 돌면서 object에 해당 코스요리가 몇 개씩 나오는지 구한다.
- object의 value 값이 가장 큰 수에 해당하는 코스요리를 찾고 그것이 2보다 크다면 그것과 같은 value를 갖는 코스요리까지 함께 정답배열에 추가 이 때 정답 배열에는 value가 아닌 key 값을 넣는다.
- answer를 오름차순 정렬 후 리턴한다.
코드
const DFS = (comb, idx) => {
if(comb.length === cnt) {
if(!m[comb]) m[comb] = 1;
else m[comb]++;
return;
}
for(let i = idx; i < s.length; i++) {
DFS(comb+s[i], i+1);
}
}
function solution(orders, course) {
var answer = [];
course.forEach(n => {
m = {};
cnt = n;
orders.forEach(order => {
order = order.split('').sort().join('');
if(n <= order.length) {
s = order;
DFS('', 0);
}
})
const nm = Object.entries(m).sort(([,a], [,b]) => b-a);
if(nm.length) {
const biggest = nm[0][1];
if(biggest >= 2) {
for(const a of nm) {
if(a[1] === biggest) answer.push(a[0]);
else break;
}
}
}
})
return answer.sort();
}
'PS(Javascript)' 카테고리의 다른 글
[프로그래머스] Lv2 괄호 변환 (0) | 2023.07.13 |
---|---|
[프로그래머스] Lv2 방금그곡 (0) | 2023.07.13 |
[프로그래머스] Lv2 다리를 지나는 트럭 (0) | 2023.07.13 |
[프로그래머스] Lv2 두 큐의 합 같게 만들기 (0) | 2023.07.11 |
[프로그래머스] Lv2 프렌즈 4블록 (0) | 2023.07.11 |
댓글