import java.io.*;
import java.util.*;
class Solution {
public static void main(String[] args) throws Exception {
//System.setIn(new FileInputStream("input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
for (int t = 0; t < 10; t++) {
br.readLine();
StringTokenizer st = new StringTokenizer(br.readLine());
Deque<Integer> queue = new ArrayDeque<>();
while (st.hasMoreTokens()) {
queue.add(Integer.parseInt(st.nextToken()));
}
int sub = 1;
while (queue.peek() - sub > 0) {
queue.addLast(queue.pollFirst() - sub);
sub++;
if (sub > 5) {
sub = 1;
}
}
queue.poll();
queue.addLast(0);
sb.append("#").append(t + 1).append(" ");
while (!queue.isEmpty()) {
sb.append(queue.pollFirst()).append(" ");
}
sb.append(System.lineSeparator());
}
System.out.println(sb);
}
}
사실 처음에 코드를 다 작성한 후 테케가 4개만 맞았었다.
while (queue.peek() - sub >= 0)
이렇게 while의 조건문에서 0까지 포함하여 돌렸기 때문이다.
이것을 빠르게 파악하고 넘어갔어야 됐는데, 순간 제약사항에서 마지막 암호 배열은 모두 한 자리 수로 구성되어 있다.
에 대한 체크를 해야하는 것으로 오해하여 해당 조건을 while문에 아래와 같이 추가하였다.
if (queue.stream().anyMatch(n -> n > 9)) {
isEnd = false;
} else {
isEnd = true;
}
제약 사항을 문제의 조건으로 오해하는 일은 다신 없도록 해야겠다.
그와는 별개로 Deque
와 같은 자료구조에서도 stream
을 쓸 수 있다는 것, 그리고 anymatch
를 활용하는 법을 이 기회에 익혔기 때문에 나쁠건 없다고 생각한다.