처음에 한사람이 모든 케이크를 가지고 있다고 생각하고, 하나씩 뜯어주는 식으로 생각하자. set과 obj를 이용하여, 개수를 센다음, size를 비교하자.
function solution(topping) {
var answer = 0;
let me = new Set();
let brother = new Set();
let obj = {};
topping.map((data)=>{
me.add(data);
if(obj[data] === undefined){
obj[data] = 1
}else{
obj[data]++;
}
})
topping.map((d)=>{
if(obj[d] >= 1){
obj[d]--;
brother.add(d);
}
if(obj[d] === 0){
me.delete(d);
}
if(me.size === brother.size){
answer++;
}
})
return answer;
}
처음에는 set만 이용하여, 토핑 개수를 셌는데, 엄청난 시간초과가 걸렸다. 문제에서 만든 obj같은 해쉬테이블을 만들어주어 문제를 해결하였더니, 효과적인 시간단축을 가질 수 있었다. 해쉬테이블의 중요성을 다시 한번 깨달았다.