와이유스토리

[큐] 프로그래머스 두 큐 합 같게 만들기 C++ 본문

코딩테스트/구현|기타

[큐] 프로그래머스 두 큐 합 같게 만들기 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;
}
Comments