프로그래머스 코딩테스트 연습 - 롤케이크 자르기 JavaScript

이번 문제는 간단하게 생각하면, 이중 for문을 사용하여 계산할 수 있는 문제였다.

본질적으로 배열을 둘로 나누어 양 쪽의 값을 비교하는 문제였다.

따라서, 시간초과를 내지 않으며 문제를 해결하기 위해서 객체를 사용하여 배열의 데이터를 관리하였다.

function solution(topping) {
    let answer = 0;
    const left = {};
    let leftCount = 0;
    const right = {};
    let rightCount = 0;
    topping.forEach(el => {
        if(!left[el]) {
            left[el] = 1;
            leftCount++;
        } else {
            left[el] += 1;
        }
    });
    for(let t of topping) {
        if(right[t]) {
            right[t] += 1;
        } else {
            right[t] = 1;
            rightCount++;
        }
        if(left[t]) {
            left[t] -= 1;
            if(left[t] <= 0) {
                delete left[t];
                leftCount--;
            }            
        }
        if(leftCount === rightCount) {
            answer++;
        }
    }
    return answer;
}

문제를 해결하기 위해서 배열을 사용하고, 변수를 통해서 양 쪽의 나누어진 배열 내부에 데이터를 관리하였다.