Algorithm

[백준 2164] 카드2

moguogu 2021. 7. 30. 16:07

분수 합

문제설명

image

카드의 동작을 수행하고 난 결과를 출력시킨다.

알고리즘

  1. 몇 장의 카드가 있는지 입력 받는다.
  2. queue에 값을 채워 넣는다.
  3. 문제에서 주어진 대로 동작을 하기위해 반복문 내에서 카드가 1장 남을 때 까지 반복한다.
  4. 맨 앞의 값을 지우고 그 다음 값을 꺼내서 맨 뒤에 넣는다.
  5. 가장 마지막에 1개 남은 카드의 값을 출력시킨다.

#include <stdio.h>
#include <iostream>
#include <queue>
using namespace std;

int main(void)
{
    ios::sync_with_stdio(0);
    cin.tie(NULL);

    int N;
    cin >> N;

    queue<int> q;

    for (int i = 0; i < N; i++)//값 입력
        q.push(i + 1);

    while (q.size() != 1)//값을 빼고 뒤집는 행위 
    {
        q.pop();
        int num = q.front();
        q.pop();
        q.push(num);
    }
    cout << q.front();//남은 값 출력 

    return 0;
}

고찰

이번 문제는 카드의 동작을 단순하게 반복 하면된다.
FIFO(first in first out)의 특성을 가진 queue를 사용하면 쉽게 풀 수 있다.

'Algorithm' 카테고리의 다른 글

[백준 2805] 나무 자르기  (0) 2021.07.30
[백준 1735] 분수 합  (0) 2021.07.30
[백준 3184] 양  (0) 2021.07.30
[백준 1715] 카드 정렬하기  (0) 2021.07.30
[백준 2504] 괄호의 값  (0) 2021.07.29