[BOJ 2164] 카드2

러시아인·2022년 3월 30일
0

알고리즘

목록 보기
1/2

https://www.acmicpc.net/problem/2164

풀이

  • 큐에 1부터 n까지의 원소를 넣어 문제에서 요구하는 대로 원소를 꺼내거나 자리를 바꾸는 작업을 반복한다.
  • 문제에서는 큐의 가장 앞의 원소와 가장 뒤의 원소를 모두 건드려야 하기 때문에, 덱을 사용하는 것이 효과적이다.

코드(C++)

#include<bits/stdc++.h>
using namespace std;

int n, ans;
deque<int> dq;

int main() {
    cin >> n;
    
    for(int i = 1; i <= n; i++) {
        dq.push_back(i);
    }
    
    while(dq.size() > 1) {
        dq.pop_front();
        
        if(dq.size() == 1) {
            break;
        }
        
        // 가장 앞의 원소를 가장 뒤로 보냄
        dq.push_back(dq.front());
        dq.pop_front();
    }
    
    cout << dq.front();
}

0개의 댓글