-
위장 해쉬로 풀기 자바스크립트TodayILearned/알고리즘 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 조합을 제외한 점화식을 세운다.
'TodayILearned > 알고리즘' 카테고리의 다른 글
[알고리즘] JS 조합, 순열 재귀함수 이해하기 (0) 2021.08.23 완주하지 못한 선수 해쉬로 풀기 자바스크립트 (0) 2021.08.16 Intersection of Two Arrays II 자바스크립트 (0) 2021.08.16 프로그래머스 최댓값과 최솟값 (0) 2021.06.14 프로그래머스 짝지어제거하기 (0) 2021.06.14