두 큐 합 같게 만들기
Lv. 2
Solution
export function makeEqualSum(queue1: number[], queue2: number[]) {
const n = queue1.length;
let sum1 = queue1.reduce((acc, curr) => acc + curr, 0);
let sum2 = queue2.reduce((acc, curr) => acc + curr, 0);
if ((sum1 + sum2) % 2 === 1) {
return -1;
}
let answer = 0;
let [startIndex, endIndex] = [0, n];
while (sum1 !== sum2 && answer <= 3 * n) {
if (sum1 < sum2) {
const num = endIndex < n ? queue1[endIndex] : queue2[endIndex % n];
sum1 += num;
sum2 -= num;
endIndex = (endIndex + 1) % (2 * n);
} else {
const num = startIndex < n ? queue1[startIndex] : queue2[startIndex % n];
sum1 -= num;
sum2 += num;
startIndex = (startIndex + 1) % (2 * n);
}
answer += 1;
}
return sum1 === sum2 ? answer : -1;
}