-
2164) 카드2 c++백준코딩일기 2020. 11. 4. 19:48
문제 ) www.acmicpc.net/problem/2164
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
풀이 )
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