큐 관련 백준 문제를 풀었다.
이제 큐 말고 다른 자료구조로 넘어가야 겠다.. 덱이라던지..
https://www.acmicpc.net/problem/11866
로직만 구하면 쉬운데 로직이 맞는지 잘 모르겠어서.. 해맴.
1부터 N까지 큐에 add 한다.
K - 1 번째까지는 첫 번째 값을 맨 뒤로 보낸다.
K번째 일때는 poll한다.
Queue의 사이즈가 1개일 때까지 반복한다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
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));
Queue<Integer> queue = new LinkedList<>();
StringTokenizer st = new StringTokenizer(br.readLine());
int K = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
bw.write("<");
LinkedList<Integer> ls = new LinkedList<Integer>();
for (int i = 1; i <= K; i++) {
queue.add(i);
}
while (queue.size()!=1) {
for (int j = 0; j < N - 1; j++) {
queue.add(queue.poll());
}
bw.write(queue.poll()+", ");
}
bw.write(queue.poll()+">");
bw.flush();
bw.close();
}
}
추가로 처음엔 sysout문을 사용하고 그 다음은 버퍼를 사용해서 출력했는데,
시간 절약이 어마어마 하게 돼서 놀랐다.
요즘 자꾸 문제만 풀게된다.. 이론 공부를 하자.