해결방법
큐를 활용해야 하는 문제.
큐의 구조는 FIFO(First In First Out)구조라는 것을 생각해보면 맨 처음 들어온 것이 맨 위에 있다고, 입력을 받으면 맨 밑으로 들어간다는 것을 알 수 있다.
따라서 N개의 수를 1부터 입력하고, 맨 위의 수를 더미로 저장한다음 하나씩 Pop을 하면서 count를 체크하고 K번째가 아니라면 다시 Push해주는 식으로 하면 된다.
정답 코드
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int N, K, count = 0;
cin >> N >> K;
queue<int> Q;
for (int i = 0; i < N; i++)
{
Q.push(i + 1);
}
cout << "<";
while (!Q.empty())
{
int dummy = Q.front();
Q.pop();
count++;
if (count == K)
{
cout << dummy;
count = 0;
if (!Q.empty())
cout << ", ";
continue;
}
Q.push(dummy);
}
cout << ">";
return 0;
}
'코딩테스트' 카테고리의 다른 글
BOJ - 카드2 2164 (0) | 2025.01.04 |
---|---|
BOJ - 숫자카드 2 10816 (0) | 2025.01.04 |
BOJ - 팩토리얼 0의 개수 1676 (0) | 2025.01.04 |
BOJ solved.ac 18110 (0) | 2025.01.04 |
BOJ 숫자의 개수 2 21567 (0) | 2024.12.30 |