문제 https://www.acmicpc.net/problem/1158
풀이
1~n까지의 수가 담긴 큐에서 k번째의 수를 반복적으로 제거하면 된다. 하지만 중간에 있는 값을 제거하는 것은 쉽지 않으니 큐를 사용한다.
1) k-1번을 반복하며 앞의 수를 빼서 맨 뒤에 넣는다.
2) 그 후에 k번째의 수를 제거한다.
이 과정을 큐에 남은 수가 없을 때까지 반복한다.
코드
#include <iostream>
#include <queue>
using namespace std;
int main()
{
queue<int> q;
int a,b;
cin>>a>>b;
for(int i=1; i<=a; i++)
{
q.push(i);
}
int tmp;
cout<<'<';
while(q.size()>1)
{
for(int i=1; i<b; i++)
{
tmp = q.front();
q.push(tmp);
q.pop();
}
cout<<q.front()<<", ";
q.pop();
}
cout<<q.front()<<'>'<<'\n';
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
백준 1927 - 최소 힙 (0) | 2022.03.20 |
---|---|
백준 1065 - 한수 (0) | 2022.03.19 |
백준 4949 - 균형잡힌 세상 (0) | 2022.03.03 |
백준 10816 - 숫자 카드 2 (0) | 2022.02.23 |
백준 1920 - 수 찾기 (0) | 2022.02.19 |