[알고리즘] 문제풀이 연습

[알고리즘] 프로그래머스 lv2 - 위장

ddgoori 2021. 8. 8. 13:09

2차원 배열을 넣고 map 을 돌리면

item 은 배열의 첫번째 배열이 나옴

 

set을 활용하면 map에서 (key, value) 쌍으로 넣을 수 있음

get은 기존에 있는 값을 가져오는 것

ex. combiClothes.get(item[1]) 하면 기존에 있던 combiClothes에서 key가 item[1]인 'eyewear'라던지 거기에 대응하는 값이 반환됨

 

map에서 key에 대응하는 value 반환하기

map이름.get(key) 함수를 실행하면 해당 map에서 그 key에 대응하는 value가 반환됨.

 

배열 for문

for(let cloth of clothes) {

 

}

 

어떤 객체에 key와 value 입력하는 법

let sorts = { };

 

sorts['이것이 key'] = '이것이 value';

sorts['key임'] = 1;

 


 

/*
    프로그래머스 > 해쉬 > 위장
*/

function solution(clothes) {
    let answer = 1;
 
    let sorts = {};

    // 옷 종류별 갯수 카운트
    for(let cloth of clothes) {
        //cloths 2차원 배열을 한줄씩 읽는다.
        console.log('cloth[1]', cloth[1]);
        // 종류 sorts[headgear] 객체 key로 있으면 그키의 value 를 ++ 숫자로 올리고
        // 종류 sorts[headgear] 객체에 key로 headgear가 없으면 그냥 그대로 1
        if(sorts[cloth[1]]) {
            sorts[cloth[1]]++;
        } else {
            sorts[cloth[1]] = 1;
        }
        // sorts['dahae'] = 1;
        // sorts['이것이key'] = '이것이 value';
        // console.log('sorts[cloth[1]]', sorts[cloth[1]]);
    }
    console.log(sorts);

    // 숫자 하나씩 올리기(각 종류별 아무것도 안입는 경우의 수 추가)
    for(let key in sorts) {
        sorts[key]++;
    }

    console.log(sorts);

    for(let key in sorts) {
       answer *= sorts[key];
    }

    return answer-1;

}

solution(
    [
        ["yellowhat", "headgear"],
        ["bluesunglasses", "eyewear"],
        ["green_turban", "headgear"]
    ]
);