알고리즘
프로그래머스 두 큐 합 같게 만들기 (JAVA)
박카스마시며코딩
2022. 9. 2. 12:04
https://school.programmers.co.kr/learn/courses/30/lessons/118667
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
저는 투포인트를 이용해 문제를 해결하였습니다.
저는 먼저 두큐의 합과 합께 두 큐를 합친 배열로 만들면서 첫번째 큐의 합을 구하였습니다.
두 큐의 합이 홀수라면 두 큐의 합을 같게 만들 수 없기에 바로 FAIL을 리턴하였습니다.
두 큐를 합친 배열을 투 포인트를 통해 총합의 1/2와 같은 값이 있는지를 확인하였습니다.
package Programmers.KAKAO_INTERN_2022;
public class 두_큐_합_같게_만들기 {
private static final int FAIL = -1;
public int solution(int[] queue1, int[] queue2) {
int answer = 0;
long totalSum = 0;
int size = queue1.length;
long sum = 0;
int[] totalQueue = new int[2 * size];
for(int i = 0 ; i < size ; i++){
totalSum += queue1[i] + queue2[i];
sum += queue1[i];
totalQueue[i] = queue1[i];
totalQueue[size + i] = queue2[i];
}
if(totalSum % 2 != 0){
return FAIL;
}
int si = 0;
int ei = size;
while(true){
if(sum == totalSum / 2){
return answer;
}else if(sum < totalSum / 2){
if(ei >= 2*size){
break;
}
sum += totalQueue[ei++];
}else{
sum -= totalQueue[si++];
}
answer++;
}
return FAIL;
}
}