두 큐 합 같게 만들기

bgy·2022년 9월 6일
0

두 큐의 합을 같게 만들 수 없는 경우는 하나의 큐를 두 벡터의 크기 합만큼 pop 했는데도 불구하고 조건을 만족하지 못한 경우

합이 큰 쪽에서 하나씩 빼되 하나의 큐를 두 벡터의 크기 합만큼 pop 했는지 확인하기 위해 큐마다 따로 카운트했어야 함

변수 이렇게 사용해 보기 -> 현재 값 저장 변수, 카운트 변수, 포인터 변수

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> queue1, vector<int> queue2) {
    int answer = -2;
    int num=queue1.size();
    long long sum1=0,sum2=0;
    for(int i=0;i<queue1.size();i++){
        sum1+=queue1[i];
        sum2+=queue2[i];
    }
    if((sum1+sum2)%2!=0){
        return -1;
    }
    int ep=0;
    while(sum1!=sum2||ep<num*2){
        if(sum1>sum2){
            sum1-=queue1[0];
            sum2+=queue1[0];
            queue2.push_back(queue1[0]);
            queue1.erase(queue1.begin());
        }
        else{
            sum1+=queue2[0];
            sum2-=queue2[0];
            queue1.push_back(queue2[0]);
            queue2.erase(queue2.begin());
        }
        ep++;
    }
    if(sum1==sum2){
        return ep;
    }
    return -1;
}

0개의 댓글