코딩테스트/구현|기타
[큐] 프로그래머스 두 큐 합 같게 만들기 C++
유(YOO)
2023. 1. 20. 00:40
변수 타입 int면 25-27 TC 틀림
최대 큐사이즈 300000번 반복 횟수 충분
#include <string>
#include <vector>
#include <queue>
using namespace std;
int solution(vector<int> queue1, vector<int> queue2) {
long long sum1 = 0;
long long sum2 = 0;
long long answer = 0;
queue<int> q1, q2;
for(auto i : queue1) {
q1.push(i);
sum1 += i;
}
for(auto i : queue2) {
q2.push(i);
sum2 += i;
}
if ((sum1+sum2) % 2 != 0) return -1;
while(true) {
if (sum1 == sum2) break;
if (sum1 > sum2) {
if (q1.empty()) return -1;
q2.push(q1.front());
sum1-=q1.front();
sum2+=q1.front();
q1.pop();
}
else {
if (q2.empty()) return -1;
int temp = q2.front();
q1.push(q2.front());
sum1+=q2.front();
sum2-=q2.front();
q2.pop();
}
if (answer > 300000) return -1;
answer++;
}
return answer;
}