http://acmicpc.net/problem/1158
{코드}
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int n, k, tmp;
scanf("%d %d", &n, &k);
queue<int> q;
for (int i = 1; i <= n; i++)
{
q.push(i);
}
printf("<");
while (n--)
{
for (int i = 0; i < k - 1; i++)
{
q.push(q.front());
q.pop();
}
printf("%d", q.front());
q.pop();
if (n)
printf(", ");
}
printf(">");
}
{설명}
이 문제는 큐를 사용하면 k만큼 돌아가며 출력하면 되는 문제이다.
먼저 1부터 n까지를 큐에 넣고 n개를 출력하기 때문에 반복문을 n번 반복한다.
k번째를 출력해야하기 때문에 k-1번 맨 앞의 수를 맨 뒤로 보낸 다음 현재 맨 앞의 수를 출력하고 pop 한다.
큐에 대한 설명은 여기를 참고하기 바란다.
'알고리즘 공부 > BOJ백준 풀이' 카테고리의 다른 글
[백준 10866번-C++] 덱 (0) | 2021.05.07 |
---|---|
[백준 10845번-C++] 큐 (0) | 2021.05.07 |
[백준 1406번-C++] 에디터 (0) | 2021.05.07 |
[백준 1874번-C++] 스택 수열 (0) | 2021.05.07 |
[백준 20191번-C++] 줄임말 (0) | 2021.05.05 |