-
2164) 카드2 c++백준코딩일기 2020. 11. 4. 19:48
문제 ) www.acmicpc.net/problem/2164
풀이 )
N 을 입력 받았을 경우를 생각해야하는데, 문제에 나온 예시로 생각을 해보자.
예를 들어 N=4 라고 입력을 받았다면,
카드는 제일 위에서부터 1234 의 순서로 놓여있다고 했으므로 for 문을 이용해서 1부터 N까지 순차적으로 입력을받고,"1을 버리면 234가 남는다." 고 했으니 ------> q.pop()
"여기서 2를 제일 아래로 옮기면 342가 된다." ---> int front 라는 변수를 만들어서
front = q.front() 를 넣고, 맨 앞에 있는 2를 pop해서 지운다.위의 두개의 일이 반복되므로, while 반복문을 사용해서 q.size() > 1 보다 클 경우에만 반복하도록 했다.
코드 )
#include <iostream> #include <queue> using namespace std; int N; string cmd; queue<int> q; int main(void) { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> N ; for(int i=1; i<=N; i++) { q.push(i); } while( q.size() > 1) { q.pop(); int front = q.front(); q.pop(); q.push(front); } cout << q.front() <<"\n"; }
'백준코딩일기' 카테고리의 다른 글
1021) 회전하는 큐 c++ (0) 2020.11.04 10866) 덱 c++ (0) 2020.11.04 18258) 큐2 c++ (0) 2020.11.04 10845) 큐 c++ (0) 2020.11.04 10804) 카드 역배치 c++ (0) 2020.10.17