프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 방법
1. 각 큐의 합을 구한다
2. 각 큐의 합을 더했을 때 값이 홀수라면 두 큐의 값을 같게 만들 수 없으므로 -1을 리턴
3. 큐의 사이즈를 qSize 변수에 담고 while문의 조건에 이동 횟수가 qSized * 4를 넘어가지 않도록 한다
4. 각 큐의 합이 같다면 count를 리턴하고 그렇지 않다면 각각 pop과 insert를 수행해준다.
5. 만약 while문이 끝날 때까지 각 큐의 합이 같아지지 않았다면 -1을 리턴
#include <string>
#include <vector>
using namespace std;
long count, sum1, sum2, goal, idx1, idx2;
int solution(vector<int> queue1, vector<int> queue2) {
for(int i = 0; i < queue1.size(); i++)
sum1 += queue1[i];
for(int j = 0; j < queue2.size(); j++)
sum2 += queue2[j];
goal = sum1 + sum2;
if(goal % 2 == 1)
return -1;
int qSize = queue1.size();
while(count < qSize * 3) {
if(sum1 == sum2) return count;
else if(sum1 < sum2) {
queue1.push_back(queue2[idx2]);
sum1 += queue2[idx2];
sum2 -= queue2[idx2];
queue2[idx2++] = 0;
}
else {
queue2.push_back(queue1[idx1]);
sum1 -= queue1[idx1];
sum2 += queue1[idx1];
queue1[idx1++] = 0;
}
count++;
}
return -1;
}
'프로그래머스 > 2레벨' 카테고리의 다른 글
[프로그래머스/C++] 연속된 부분 수열의 합 (0) | 2024.01.10 |
---|---|
[프로그래머스/C++] 택배상자 (1) | 2024.01.10 |
[프로그래머스/C++] 무인도 여행 (0) | 2023.07.06 |
쿼드압축 후 개수 세기/C++ (0) | 2023.02.22 |
[1차] 프렌즈4블록/C++ (0) | 2023.02.21 |