728x90
https://school.programmers.co.kr/learn/courses/30/lessons/118667
728x90
메모리: 146 MB, 시간: 20.26 ms
사용 알고리즘: 투 포인터
import java.util.*;
class Solution {
public int solution(int[] queue1, int[] queue2) {
// 두 배열 합치기
int[] queue = new int[queue1.length + queue2.length];
// 투 포인터
int l = 0, r = queue1.length - 1;
// queue[l] ~ queue[r]까지의 합과 전체 합 구하기
long totalSum = 0, sum = 0;
for(int i = 0; i < queue1.length; i++) {
totalSum += queue1[i];
sum += queue1[i];
queue[i] = queue1[i];
}
for(int i = 0; i < queue2.length; i++) {
totalSum += queue2[i];
queue[i + queue1.length] = queue2[i];
}
// 전체 합이 홀수라면 답을 구할 수 없음
if(totalSum % 2L == 1) return -1;
int answer = -1;
int count = 0;
while(l <= r && r < queue.length) {
if(totalSum / 2 == sum) {
answer = count;
break;
}
else if(totalSum / 2 < sum) {
count++;
sum -= queue[l++];
}
else {
count++;
if(++r < queue.length) sum += queue[r];
}
}
return answer;
}
}
728x90
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스, 12940] 최대공약수와 최소공배수 (java) (0) | 2025.01.21 |
---|---|
[프로그래머스, 76501] 음양 더하기 (java) (0) | 2025.01.20 |
[프로그래머스, 68644] 두 개 뽑아서 더하기 (java) (0) | 2025.01.20 |
[프로그래머스, 12950] 행렬의 덧셈 (java) (0) | 2025.01.19 |
[프로그래머스, 12922] 수박수박수박수박수박수? (java) (0) | 2025.01.19 |