[Programmers] 위장 - JavaScript

Joosi_Cool·2023년 2월 12일
2

Programmers

목록 보기
20/98
post-thumbnail

문제설명



설계 과정

1) Hash Map 과 단어 배열을 하나 만든다.
-> 단어 배열 : 새로운 단어가 들어왔을때, 저장해둠.
2) 입력 배열을 하나씩 체크

  • Hash Map에 이게 있는가?
    -> 있다면 그 해쉬 count에 +1을 해준다
    -> 없다면 그 해쉬를 생성해주고 value값으로 count을 1로 해준다.


    3) 마지막으로 단어 배열에 있던 값을 hashMap에 get을 통해 value값을 가져온다. 이때 answer에 곱한다.
    -> 이는 조합을 생각해보면 모자 2종류, 옷 3종류 있다면 (2+1) * (3+1) - 1 이 값이 되는데 이를 이용한 식을 만든다.


풀이 코드

function solution(s) {
    var hashMap = new Map();
    var newWords = [];
    s.forEach(element => {
        //있다면
        if(hashMap.has(element[1])){
            hashMap.set(element[1],hashMap.get(element[1])+1);
        } 
        //없다면
        else{
            hashMap.set(element[1],1);
            newWords.push(element[1]);
        }
    });
    var answer = 1;
    newWords.forEach(element=>{
        answer *= (hashMap.get(element)+1);
    })

    return --answer;
}


결과

이번 문제는 해시를 알고 있다면 무난하게 풀 수 있는 문제였다. 해시에 대한 설명은 지난 블로깅 때 했으므로 아래 링크를 달면서 마무리하려 한다. 혹시나 해시에 대해 잘모른다면 아래 링크를 참고하면 좋을 듯 하다.

https://velog.io/@sean2337/JavaScript-%ED%95%B4%EC%8B%9C-%EC%A0%81%EC%9A%A9-%EB%B0%A9%EB%B2%95

profile
집돌이 FE개발자의 노트

1개의 댓글

comment-user-thumbnail
2023년 2월 15일

좋은 문제풀이 방법 공유해주셔서 감사합니다 🥹

답글 달기