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
좋은 문제풀이 방법 공유해주셔서 감사합니다 🥹