728x90
처음 봤을 땐 벡터를 사용할까 생각했다. 그러나 분류를 보니 큐가 있었다.
정말 이걸 왜 생각 못했을까, 이걸 코테에서 만났다면 멍청하게 삽질하다가 시간버렸을 것 같다.
아이디어는 간단하다.
1. 큐에서 front 부터 꺼내면서 K번째가 아니면 다시 큐에 쌓는다.
2. K번째이면 큐에 쌓지 않는다.
3. 큐가 빌 때 까지 반복한다.
#include <iostream>
#include <queue>
using namespace std;
int main() {
queue<int> Q;
int N, K;
cin >> N >> K;
for (int i = 1; i <= N; i++)
Q.push(i);
int cnt = 0;
cout << "<";
while (!Q.empty()) {
if (cnt < K - 1) {
Q.push(Q.front());
Q.pop();
cnt++;
}
else {
if (Q.size() != 1)
cout << Q.front() << ", ";
else
cout << Q.front();
Q.pop();
cnt = 0;
}
}
cout << ">";
}
'백준 문제 풀이' 카테고리의 다른 글
백준 17070번 파이프 옮기기 1(C++) (1) | 2022.12.12 |
---|---|
백준 14503번 로봇 청소기 (C++) (0) | 2022.11.26 |
백준 1475번 방 번호 (C++) (0) | 2022.11.25 |
백준 2805번 나무 자르기(C++) (2) | 2022.10.29 |
백준 7562 나이트의 이동(C++) (2) | 2022.10.13 |