[C++] Kick Start 2022 Round A - Typing Solution

아니 원래 큐를 이용해서 풀었고 대부분의 테스팅 결과도 멀쩡하게 나오는데 결과가 계속 틀렸다고 나와서 영문을 모르겠는 문제

#include <iostream>
#include <queue>
using namespace std;

int T;
string I, P;
int main(int argc, char** argv){
  ios::sync_with_stdio(false);
  cin.tie(0); cout.tie(0);

  cin >> T;

  for(int i = 1; i <= T; i++){
    long long ans = 0;
    queue<char> q; // I 값 하나씩 저장
    cin >> I >> P;

    for(int j = 0; j < I.size(); j++){
      q.push(I[j]); // I 값 큐에 저장
    }

    for(int j = 0; j < P.size(); j++){
      int iChar = q.front(); //ASCII
      if(iChar == P[j]){
        q.pop(); // I값과 같은 경우
      } else {
        ans++; // delete 해야하는 문자
      }
    }

    if(q.empty()){ // I값 만들 수 있는 경우
      cout << "Case #" << i << ": " << ans << "\n";
    } else {
      cout << "Case #" << i << ": " << "IMPOSSIBLE\n";
    }
  }

  return 0;
}

원래는 이렇게 풀었다.

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
    ll t, ans, i1, j, l1, l2, i2, t1, c;
    string a, b;
    
    cin>>t;
    
    for(t1=1; t1<=t; t1++){
        cin>>a;
        cin>>b;
        c=0;ans=0;
        l1=a.size();
        l2=b.size();
        
        for(i1=0, i2=0; i1<l1 && i2<l2; ){
            if(a[i1]==b[i2]){
                c++;
                i1++;
                i2++;
            }else{
                i2++;
                ans++;
            }
        }
        
        cout<<"Case #"<<t1<<": ";
        
        if(c==l1){
            cout<<ans+(l2-i2)<<"\n";
        }else{
            cout<<"IMPOSSIBLE\n";
        }
    }
}

근데 다른 사람들 보니까 그냥 for문 사용해서 값 비교해서 같으면 한 칸 전진 아니면 P만 전진하고 ans 더해주고 이렇게 하더라?? 아니 내가 한거랑 똑같은거 아니냐? 쓰는 자료구조만 다르고 이해가 안되네 왜 내꺼만 틀리냐고 ㅡㅡ time 리밋 벗어났거나 메모리 문제가 뜨는 것도 아니고 걍 답 틀림ㅋ 이러는게 너무너무 화가남

심지어 그냥 for문 쓰는 것보다 저렇게 큐에 넣어서 하는 것이 개인적으로 더 깔끔하다는 생각이 든다.

그리고 너무 화나서 test case 다운 받아서 하나 돌려봤는데 9만 얼마 되는 값 제대로 출력해냄... 아니 뭐가 문제냐고 ㅡㅡ 아무튼 해결하지 못했다. 아무리 생각해도 맞는 것 같은데...

킥 스타트는 구글이 제시해주는 방식대로만 풀어야하나? 야박하네

좋은 웹페이지 즐겨찾기