
내가 생각했을때 문제에서 원하는부분
첫 줄에 공백으로 구분된 다섯 개의 정수 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();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.