강의로 돌아가기
SIEUN KIM

1번이 틀리고 24번이 시간초과가 납니다.

어디서 잘못됐는지를 모르겠어요... ㅠㅠㅠㅠㅠㅠㅠ
도와주실 분 계신가요??
코드 첨부합니다.
간단한 코드에요
최악의 상황에 while문을 600,000번 도는 것 같은데
시간초과가 날만한 상황인가요???

작성중인 코드―solution.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <string>
#include <vector>

using namespace std;

int solution(vector<int> queue1, vector<int> queue2) {
    int answer = 0;
    long long sum1=0, sum2=0;
    for(int i=0;i<queue1.size();i++){
        sum1+=queue1[i];
    }
    for(int i=0;i<queue2.size();i++){
        sum2+=queue2[i];
    }
    if((sum1+sum2)%2==1)
        return -1;
    int size = queue1.size()+queue2.size();
    while(sum1!=sum2){
        if(answer>=size){
            answer = -1;
            break;
        }
        answer++;
        if(sum1>sum2){
            int temp = queue1[0];
            queue1.erase(queue1.begin());
            queue2.push_back(temp);
            sum1-=temp;
            sum2+=temp;
        }else{
            int temp = queue2[0];
            queue2.erase(queue2.begin());
            queue1.push_back(temp);
            sum2-=temp;
            sum1+=temp;
        }
    }
    return answer;
}
2 개의 답변
coline

vector의 erase 함수의 경우 O(n)의 시간이 듭니다.
즉 해당 반복문은 최악의 경우 600,000 * 300,000의 시간이 소모되기때문에 시간초과가 나는 거 같습니다.

  • SIEUN KIM

    그렇군요!! 다시 해보고 댓글달겠습니다🥰 답변 감사합니다

    SIEUN KIM―2022.09.27 19:01
  • SIEUN KIM

    erase함수를 지우고 시간 초과 문제를 해결했습니다. 감사합니다.!!!!

    SIEUN KIM―2022.09.28 11:20
  • SIEUN KIM

    혹시 1번이 계속 실패하는데 이유나 반례도 알고 계신가요???

    SIEUN KIM―2022.09.28 11:20
  • ysbaekFox

    충격적이네요... 어째서 맨 첫번째 element를 erase하는데 결과가 달라지는걸까요 ㄷㄷ.... deque의 pop_front로 변경 후 바로 통과했습니다. 감사합니다.

    ysbaekFox―2023.09.10 00:33
coline

입력이 다음과 같을 때 A = [3, 3, 3, 3], B = [3, 3, 21, 3] 일 경우 두 큐의 합이 같게 되려면 9번 걸리게 되는데 위 코드에서는 두 큐의 길이의 합인 8이상이 되면 -1을 리턴합니다
움직이는 횟수 제한을 여유롭게 주시면 해결 될 거에요

  • 박민제

    1번에서 헤매고 있었는데 감사합니다!

    박민제―2022.10.21 17:14
  • Dalgoon

    이건 생각 못했네 감사합니다 ㅠㅜ

    Dalgoon―2022.12.13 04:28
  • asiloveyou

    감사합니다 ㅠ

    asiloveyou―2022.12.15 16:35
  • 김종수

    감사합니다!

    김종수―2023.09.09 09:46
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.