이번 문제는 간단하게 생각하면, 이중 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;
}
문제를 해결하기 위해서 배열을 사용하고, 변수를 통해서 양 쪽의 나누어진 배열 내부에 데이터를 관리하였다.
'코딩테스트 연습' 카테고리의 다른 글
leetcode 코딩테스트 연습 - 2624. Snail Traversal (JavaScript) (0) | 2023.08.01 |
---|---|
leetcode 코딩테스트 연습 - 1844. Replace All Digits with Characters (JavaScript) (1) | 2023.07.20 |
프로그래머스 코딩테스트 연습 - 무인도 여행 JavaScript (0) | 2023.06.25 |
프로그래머스 코딩테스트 연습 - 시소 짝꿍 JavaScript (1) | 2023.06.18 |
프로그래머스 코딩테스트 연습 - 요격 시스템 JavaScript (0) | 2023.05.27 |