풀이
offer(poll()) 을 통해 앞의 숫자를 뒤로 입력시키며 큐를 순회하다가 해당 순번이 되면 큐를 poll하여 출력시켜줌.
소스코드
1. while문 이용
public class Baekjoon1158 {
static public void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
Queue<Integer> q = new LinkedList<>();
Queue<Integer> result = new LinkedList<>();
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
for(int i = 1; i<=N; i++)
q.offer(i);
System.out.print("<");
int count = 0;
while (q.size() != 0) {
count++;
if (count == K) {
if(q.size() == 1)
System.out.print(q.poll() + ">");
else
System.out.print(q.poll() + ", ");
count = 0;
}
else {
q.offer(q.poll());
}
}
}
}
for문 이용
public class Baekjoon1158 {
static public void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
Queue<Integer> q = new LinkedList<>();
Queue<Integer> result = new LinkedList<>();
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
for(int i = 1; i<=N; i++)
q.offer(i);
System.out.print("<");
while(!q.isEmpty()) {
if (q.size() == 1) {
System.out.print(q.poll() + ">");
break;
}
for (int i = 1; i < K; i++) {
q.offer(q.peek());
q.poll();
}
System.out.print(q.poll() + ", ");
}
}
}