문제

카드2 백준 2164번


리뷰

벡터로 하면 시간 초과가 난다.

삽입, 삭제가 자주 일어나니까 큐나 리스트로 풀어야 한다.

pop 하고 나서, 큐의 크기를 바로 체크해야 함을 생각해내지 못해서 오래걸린 문제.


맞은 코드

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

int num, N, M;
queue<int> q;

int main(void){

      cin >> N;

      for(int i = 1; i <= N; i++) {
          q.push(i);
    }

    if(q.size() == 1) cout << 1;
    else {

        int res = 0;

        while(1){
            q.pop();

            if(q.size() == 1) {
                res = q.front(); break;
            }
             int fro = q.front();
             q.pop();          // 맨앞 삭제 
              q.push(fro);     // 맨앞 숫자를 뒤에 푸시.
        }

        cout << res;
    }


    return 0;
} 

728x90

'알고리즘 > 백준' 카테고리의 다른 글

골드바흐 파티션 백준 17103번  (0) 2020.10.02
요세푸스 문제 0 백준 11866  (0) 2020.10.02
ACM 호텔 백준 10250번 c++  (0) 2020.09.28
이항계수1 백준 11050번 c++  (0) 2020.09.28
단어정렬 백준 1181번  (0) 2020.09.28

+ Recent posts