문제 출처: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14uWl6AF0CFAYD&categoryId=AV14uWl6AF0CFAYD&categoryType=CODE&problemTitle=%EC%95%94%ED%98%B8&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Queue;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws IOException {
StringBuilder sb = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
for (int i = 0; i < 10; i++) {
int T = Integer.parseInt(reader.readLine());
Queue<Integer> queue = new ArrayDeque<>();
StringTokenizer tokenizer = new StringTokenizer(reader.readLine());
while (tokenizer.hasMoreTokens()) {
queue.offer(Integer.parseInt(tokenizer.nextToken()));
}
queue = generateCode(queue);
sb.append("#").append(T).append(" ");
for (int num : queue) {
sb.append(num).append(" ");
}
sb.append("\n");
}
System.out.println(sb);
}
private static Queue generateCode(Queue<Integer> queue) {
int minus = 0;
while (true) {
int temp = queue.poll();
int target = temp - (minus++ % 5 + 1);
if (target <= 0) {
queue.offer(0);
break;
}
queue.offer(target);
}
return queue;
}
}
- 문제를 꼼꼼히 읽어보지 않아서 몇 번 실패를 거듭하였다.
- 새롭게 알게 된 것은 ArrayDeque() 클래스인데, 큐와 스택을 혼합안 Deque 자료구조를 구현한 클래스다. 근데 이게 큐로만, 스택으로만도 쓸 수 있는데 기존 LinkedList() 보다 메모리와 실행시간에서 이점이 있음을 보았다.