[SWEA] 1225. 암호 생성기

최대 1 분 소요

문제 링크

1225. 암호 생성기


풀이 과정

문제에서 숫자가 0보다 작아지면 그만한다고 적혀있지만, 탈출 조건에 0도 포함시켜줘야 합니다.


boolean exit = false;

outer:
while (true) {
    for (int num = 1; num <= 5; num++) {
        int now = q.poll();
        now -= num;

        if (now <= 0) {
            exit = true;
            now = 0;
        }

        q.add(now);

        if (exit) break outer;
    }
}

위 코드는 다음 과정을 수행합니다.

  1. 큐에서 요소 하나를 빼서 num 을 뺀다.
    • 뺀 값이 0 이하면 그만한다.
    • 아니라면, 큐에 다시 넣어준다.
  2. num 값을 1 증가시킨다.


코드

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        for (int i = 0; i < 10; i++) {
            int tc = sc.nextInt();
            Queue<Integer> q = new LinkedList<>();

            for (int j = 0; j < 8; j++) q.add(sc.nextInt());

            boolean exit = false;

            outer:
            while (true) {
                for (int num = 1; num <= 5; num++) {
                    int now = q.poll();
                    now -= num;

                    if (now <= 0) {
                        exit = true;
                        now = 0;
                    }

                    q.add(now);

                    if (exit) break outer;
                }
            }

            System.out.print("#" + tc + " ");
            while (!q.isEmpty()) System.out.print(q.poll() + " ");
            System.out.println();
        }
    }
}

카테고리:

업데이트:

댓글남기기