TodayILearned/알고리즘
위장 해쉬로 풀기 자바스크립트
tuigun
2021. 8. 16. 10:47

바로 전에 올린 '완주하지못한 선수'
2021.08.16 - [TodayILearned/알고리즘] - 완주하지 못한 선수 해쉬로 풀기 자바스크립트
와 비슷한 맥락의 문제이고,
다만 경우의 수가 합쳐져서 점화식 때문에 헷갈리게되는 문제이다.
또 문제가 대놓고 해쉬충돌이 있을테니 처리하라고 예고까지 해준다.
(그 전 위장문제도 그랬음)
function solution(clothes) {
let key;
const hashTable = {};
for (let i = 0; i < clothes.length; i++) {
key = clothes[i][1];
if (!hashTable[key]) {
hashTable[key] = 1;
} else {
hashTable[key] = hashTable[key] + 1;
}
}
let result = 1;
for (key in hashTable) {
console.log(hashTable[key]);
result = (hashTable[key] + 1) * result;
}
return result - 1;
}
solution([
["yellowhat", "headgear"],
["bluesunglasses", "eyewear"],
["green_turban", "headgear"],
]);
- 존재하는 경우의 수는 종류별로 옷을 섞어입는 경우 + 아이템 하나만 착용하는 경우이다.
- {headgear : 2, eyewear:1} 일 경우, 섞어입는 경우와 단독 아이템 착용의 경우를 모두 따져주기 위해서
- {headgear : [yellowhat,greenhae,none], eyewear: [bluesunglasese, none]} 처럼 아무것도 없는 경우까지 합해서 점화식을 세워준다. 단, none + none 조합을 제외한 점화식을 세운다.