문제
풀이
먼저 큐에
출력 형식이 특이함에 유의합시다.
코드
Python
import sys
from collections import deque
input = lambda: sys.stdin.readline().rstrip()
n, k = map(int, input().split())
queue = deque([i for i in range(1, n + 1)])
answerList = []
while queue:
for i in range(k-1):
queue.append(queue.popleft())
answerList.append(queue.popleft())
print("<", end="")
print(*answerList, sep=", ", end="")
print(">")C++
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, k;
cin >> n >> k;
vector<int> answerList;
queue<int> q;
for (int i = 1 ; i <= n ; i++) q.push(i);
while (not q.empty()) {
for (int i = 0 ; i < k-1 ; i++) {
q.push(q.front());
q.pop();
}
answerList.push_back(q.front());
q.pop();
}
cout << '<';
for (int i = 0 ; i < answerList.size()-1 ; i++) {
cout << answerList[i] << ", ";
}
cout << answerList.back();
cout << '>';
return 0;
}Java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer tk = new StringTokenizer(br.readLine());
int n = Integer.parseInt(tk.nextToken()), k = Integer.parseInt(tk.nextToken());
Queue<Integer> queue = new LinkedList<>();
for (int i = 1; i <= n; i++)
queue.add(i);
ArrayList<Integer> answerList = new ArrayList<>();
while (!queue.isEmpty()) {
for (int i = 0; i < k - 1; i++)
queue.add(queue.poll());
answerList.add(queue.poll());
}
bw.write('<');
for (int i = 0; i < n - 1; i++)
bw.write(answerList.get(i) + ", ");
bw.write(answerList.get(n - 1) + ">");
bw.close();
}
}