[SWEA]#1225暗号生成器


Link
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14uWl6AF0CFAYD&categoryId=AV14uWl6AF0CFAYD&categoryType=CODE
Code
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

class Solution {
    public static void main(String args[]) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        for (int testCase = 1; testCase <= 10; testCase++) {
            StringTokenizer st = new StringTokenizer(br.readLine(), "");
            st.nextToken();
            st = new StringTokenizer(br.readLine(), " ");
            Queue<Integer> queue = new LinkedList<>();
            while (st.hasMoreTokens()){
                queue.offer(Integer.parseInt(st.nextToken()));
            }
            boolean flag = true;
            while (flag) {
                for (int i = 1; i <= 5; i++) {
                    int x = queue.poll();
                    if (x - i > 0) {
                        queue.offer(x - i);
                    }
                    else{
                        queue.offer(0);
                        flag = false;
                        break;
                    }
                }
            }
            System.out.printf("#%d ", testCase);
            while (!queue.isEmpty()) {
                System.out.printf("%d ", queue.poll());
            }
            System.out.println();
        }
    }
}
Solution
flagをtrueに設定し、while文を迂回してfor文を1サイクルループします.
キューに現在の値をポーリングし、現在の値-iが0より大きい場合は、再びx-iをキューに提供します.そうでない場合は、キューに0を提供し、flagをfalseに変更し、breakはパスワードを完了します.