본문 바로가기

코딩테스트/백준

[백준] 2164번: 카드2

728x90
반응형


🔗 문제 링크

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


반응형
728x90

👩‍💻 코드

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

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
    int N;
    cin >> N;
    
    queue<int> q;
    for(int i=1; i<=N; i++){
        q.push(i);
    }
    
    while(q.size() > 1){
        q.pop();
        
        int f = q.front();
        q.pop();
        q.push(f);
    }
    
    cout << q.front();
    
    return 0;
}

📝 풀이

큐의 선입선출 성질을 이용하면 간단히 풀 수 있습니다.

1부터 N까지의 숫자 카드를 큐에 push 합니다.

 

가장 위에 있는 카드를 버린다 -> pop()

그다음 가장 위에 있는 카드 -> q.front()

가장 아래로 옮긴다 -> q.push()

 

이 과정을 q에 하나의 카드만 남을 때까지 반복 후 q의 front를 출력합니다.

728x90
반응형

'코딩테스트 > 백준' 카테고리의 다른 글

[백준] 1377번: 버블 소트  (2) 2024.09.07
[백준] 11286번 : 절댓값 힙  (0) 2024.09.07
[백준] 17298번 : 오큰수  (0) 2024.09.06
[백준] 1874번 : 스택 수열  (1) 2024.09.06
[백준] 11003번 : 최솟값 찾기  (1) 2024.09.06