백준 어떤 호박의 할로윈 여행

KIMYEONGJUN·2026년 4월 13일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫 줄에 공백으로 구분된 다섯 개의 정수 A, a, B, b, P가 주어진다. ( 0 < A, a, B, b, P ≤ 1000000, a < A , b < B)
A와 B는 두 고리의 바깥 반지름, a와 b는 두 고리의 안쪽 반지름이며 P는 판의 반지름이다. (힌트 그림 참고)

만일 진욱이가 조건을 만족하는 두 고리를 만들 수 있다면 "Yes" 를, 만들 수 없다면 "No" 를 출력한다.

내가 이 문제를 보고 생각해본 부분

먼저 입력받은 다섯 개의 값을 정수형으로 변환하여 변수 A, a, B, b, P에 저장한다.
A: 첫 번째 고리의 바깥 반지름
a: 첫 번째 고리의 안쪽 반지름
B: 두 번째 고리의 바깥 반지름
b: 두 번째 고리의 안쪽 반지름
P: 판의 반지름
첫 번째 조건: 만약 두 고리 중 하나라도 판의 반지름보다 바깥 반지름이 크면, 판 안에 들어올 수 없으므로 "No"를 출력한다.
두 번째 조건: 두 고리의 바깥 반지름 합이 판의 반지름보다 작거나 같으면, 두 고리를 판 안에 겹치지 않고 충분히 배치할 수 있으므로 "Yes"를 출력한다.
세 번째, 네 번째 조건:
첫 고리의 안쪽 반지름이 두 번째 고리의 바깥 반지름보다 크거나 같다면, 첫 고리가 두 번째 고리 안쪽 구멍에 완전히 들어가는 배치가 가능하여 겹치지 않으므로 "Yes"를 출력한다.
반대로 두 번째 고리의 안쪽 반지름이 첫 고리의 바깥 반지름보다 크거나 같으면, 두 번째 고리가 첫 번째 고리의 안쪽 구멍에 완전히 들어가 배치 가능하므로 "Yes"를 출력한다.
위 모든 조건에 해당하지 않으면, 두 고리를 판 안에 겹치지 않고 둘 수 없으므로 "No"를 출력한다.

코드로 구현

package baekjoon.baekjoon_34;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

// 백준 3622번 문제
public class Main1357 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] inputs = br.readLine().split(" ");

        int A = Integer.parseInt(inputs[0]);
        int a = Integer.parseInt(inputs[1]);
        int B = Integer.parseInt(inputs[2]);
        int b = Integer.parseInt(inputs[3]);
        int P = Integer.parseInt(inputs[4]);

        if (A > P || B > P) {
            System.out.println("No");
        } else if (A + B <= P) {
            System.out.println("Yes");
        } else if (a >= B) {
            System.out.println("Yes");
        } else if (b >= A) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }

        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글