https://school.programmers.co.kr/learn/courses/30/lessons/42578
// obj를 이용한 해시맵 구하는 방법 O(n)
function solution(clothes) {
// answer에 값을 곲해야해서 기본값 1
let answer = 1;
let obj = {}
for (let i = 0; i < clothes.length; i++) {
// '입지 않는 경우'를 포함하기 위해 a의 기본값을 1로 지정합니다.
obj[clothes[i][1]] = (obj[clothes[i][1]] || 1) + 1
}
for (let key in obj) {
answer *= obj[key]
}
// 모든 의상의 종류를 '입지 않는 경우'로 선택한 경우 한가지를 뺍니다.
return answer - 1
}
console.log(solution([["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]]))
console.log(solution([["crow_mask", "face"], ["blue_sunglasses", "face"], ["smoky_makeup", "face"]]))
// js 해시맵인 new Map 메소드를 사용 O(n)
function solution(clothes) {
console.time('time')
let map = new Map();
// answer에 값을 곲해야해서 기본값 1
let answer = 1;
for (let i = 0; i < clothes.length; i++) {
// '입지 않는 경우'를 포함하기 위해 a의 기본값을 1로 지정합니다.
if (map.has(clothes[i][1])) {
map.set(clothes[i][1], map.get(clothes[i][1]) + 1)
} else {
map.set(clothes[i][1], 2)
}
}
map.forEach((cloth) => {
answer *= cloth
})
// 모든 의상의 종류를 '입지 않는 경우'로 선택한 경우 한가지를 뺍니다.
console.timeEnd('time')
return answer - 1
}
console.log(solution([["yellow_hat", "headgear"], ["blue_sunglasses", "eyewear"], ["green_turban", "headgear"]]))
console.log(solution([["crow_mask", "face"], ["blue_sunglasses", "face"], ["smoky_makeup", "face"]]))