궤도

[백준] 2164번 : 카드2 본문

💻 현생/⛓ 알고리즘

[백준] 2164번 : 카드2

영이오 2021. 3. 26. 18:05

문제

 


풀이

 

1~N까지의 카드가 순서대로 있다고 한다.

 

제일 위에 있는 카드를 버리고(pop)

그 다음에 있는 제일 위의 카드를 제일 아래로 옮긴다.(pop->push)

이걸 카드가 1장 남을 때까지 반복한다고 한다.(size가 1이면 반복문 종료)

 

이대로 작성하면 된다.


소스코드

 

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

int main() {
    queue <int> q;
    int N;

    cin >> N;
    for (int i = 1; i <= N; i++)
        q.push(i);
    while (q.size() != 1) { //한 장만 남으면 종료
        q.pop(); //첫 장 제거
        int tmp = q.front(); //그 다음장 저장해두고
        q.pop(); //제거
        q.push(tmp); //맨 뒤로 다시 넣어줌
    }
    cout << q.front();
}
Comments