프로그래머스2단계 - 위장 - 해시

원동휘·2023년 1월 15일
0

프로그래머스

목록 보기
46/46

위장 - 해시

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"]]))
profile
Front-End Developer #Nextjs #React #Typescript

0개의 댓글