#
문제 설명
롤케이크를 두 조각으로 잘라서
동생과 한 조각씩 나눠 먹기
조건
매개 변수
topping
반환값
topping | result |
---|---|
[1, 2, 1, 3, 1, 4, 1, 2] | 2 |
[1, 2, 3, 1, 4] | 0 |
function solution(topping) {
var answer = 0;
let right = new Set(topping);
let left = new Set();
let counter = new Array(10_001).fill(0);
if(topping.length === 1){
return answer;
}
topping.forEach(v => {
counter[v]++;
})
topping.forEach(v => {
if(counter[v] >= 1){
counter[v]--;
}
if(counter[v] === 0){
right.delete(v);
}
left.add(v);
if(left.size === right.size){
answer++;
}
})
return answer;
}
풀이
set 과 조건문을 통해 solution 구하기
- 각 left set 과 right set 을 선언하여 중복 없애기
- 모든 요소는 right 에 있는 것을 전제로 시작
- counter 에 해당 토핑의 개수를 담기
- counter 의 개수에 따라 right 에 제거하고 left 에 추가하기
- left 와 right 가 같은 개수일 때 공평하게 자르는 방법의 개수 +1