728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/118667
풀이 방법
이번 문제는 큐를 이어붙여 투포인터 알고리즘을 이용해 풀었다.
시작포인터와 끝 포인터는 각각 0과 첫번째 큐의 끝으로 설정해 두었다.
그 이유는 한개의 큐의 합이 전체 큐의 합의 절반이 되는 것을 감지해야하기 때문에 첫번째 큐의 합을 기준으로 크다면 lp에 해당하는 수를 빼고, 작다면 rp에 해당하는 수를 더해주면서 문제를 풀었다.
코드
const solution = (queue1, queue2) => {
let queue = [...queue1, ...queue2];
let sum1 = queue1.reduce((a, c) => a + c, 0);
let target = queue.reduce((a, c) => a + c, 0) / 2;
let lp = 0, rp = queue1.length-1;
for(let cnt = 0; cnt < queue1.length * 3; cnt++){
if(sum1 === target){
return cnt;
}
if(sum1 < target){
sum1 += queue[++rp];
}
else{
sum1 -= queue[lp++];
}
}
return -1;
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 2Level / 연습문제 / 무인도 여행 (0) | 2023.10.12 |
---|---|
2Level / 2021 KAKAO BLIND RECRUITMENT / 메뉴 리뉴얼 (1) | 2023.10.09 |
2Level / 월간 코드 챌린지 시즌1 / 쿼드압축 후 개수 세기 (0) | 2023.10.05 |
2Level / 연습 문제 / 연속된 부분 수열의 합 (0) | 2023.10.03 |
2Level / 연습 문제 / 택배상자 (0) | 2023.09.25 |