문제
리뷰
벡터로 하면 시간 초과가 난다.
삽입, 삭제가 자주 일어나니까 큐나 리스트로 풀어야 한다.
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 |