본문 바로가기
Beakjoon&프로그래머스/Java

[백준/Java] 31066번 비 오는 날

by 현장 2026. 3. 2.

import java.io.*;
import java.util.*;

public class BOJ31066 {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
                new BufferedReader(new InputStreamReader(System.in));

        int testCase = Integer.parseInt(br.readLine());

        for (int test = 0; test < testCase; test++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            int studentCnt = Integer.parseInt(st.nextToken());
            int umbrellaCnt = Integer.parseInt(st.nextToken());
            int usingUmbrella = Integer.parseInt(st.nextToken());
            // 학생수가 1이 아닌데 우산이 1개고 1명만 사용 가능하면 왕복만 반복해서 불가능
            if (studentCnt != 1 && umbrellaCnt == 1 && usingUmbrella == 1) {
                System.out.println(-1);
            } else {
                int count = 0;
                while (true) {
                    studentCnt -= umbrellaCnt * usingUmbrella;
                    count++;
                    // 남아있는 사람 없으면 탈출
                    if (studentCnt <= 0) {
                        break;
                    }
                    // 우산가지고 오는 경우도 +1
                    studentCnt += 1;
                    count++;
                }
                System.out.println(count);
            }
            br.close();
        }
    }
}

우산을 가져오는 것과 가져오는 횟수도 포함을 해서 로직을 짜야하는데 문제 이해를 잘못했었지만, 이를 알고 다시 로직을 수정해 해결했습니다