

내 풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
// 차례대로 제거해서 출력하는 문제
// 디큐를 써보자
// K번째 사람은 pop하고, 1 ~ k-1은 다시 offer해준다.
// 반복하고, K보다 수가 작아질 경우 순서대로 출력한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
Deque<Integer> deque = new ArrayDeque<>();
for (int i = 1; i <= N; i++) {
deque.add(i);
}
while(true){
if (deque.size() == 0){
break;
}else{
for (int i = 1; i < K; i++) {
deque.offerLast(deque.pollFirst());
}
sb.append(deque.poll());
sb.append(", ");
}
}
sb.deleteCharAt(sb.length() -1);
sb.deleteCharAt(sb.length() -1);
System.out.println("<" + sb.toString() + ">");
}
}
느낀점
이 문제는 디큐로 풀었다. 이유는.. 그냥 디큐가 더 빠르다고 그래서..
문제를 출력할 때에는 형식이 있었는데 모두 sb.append()에 추가해준 뒤
sb.deleteCharAt(sb.length() -1);을 두 번 해줘서 해결했다.
코테 볼 때 이 메서드들을 다 외울 수 있을까? 갈 길이 멀다