728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/118667
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 방법
이번 문제는 큐를 이어붙여 투포인터 알고리즘을 이용해 풀었다.
시작포인터와 끝 포인터는 각각 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 |