공부하기/백준

[Java] 백준 풀기 6322 - 직각 삼각형의 두 변

XEV 2025. 1. 18. 21:39

자바 백준 6322번

브론즈 3

https://www.acmicpc.net/problem/6322

 

 

 

 

 

문제 보기

분류: 수학, 기하학, 사칙연산, 피타고라스 정리

 

 

 

 

 

코드 풀이

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int caseNumber = 1;
while (true) {
// 사용자 입력 받기 (세 변의 길이)
double a = sc.nextDouble();
double b = sc.nextDouble();
double c = sc.nextDouble();
// 종료 조건 확인
if (isEndCondition(a, b, c)) {
break;
}
// 케이스 번호 출력
System.out.printf("Triangle #%d\n", caseNumber);
// 입력된 값으로 삼각형 계산 처리
processCase(a, b, c);
caseNumber++;
}
}
// 프로그램 종료 조건 확인 (모든 변이 0인 경우)
private static boolean isEndCondition(double a, double b, double c) {
return a == 0 && b == 0 && c == 0;
}
// 입력된 변의 길이에 따라 적절한 계산 수행
private static void processCase(double a, double b, double c) {
if (a == -1) { // a가 비어 있는 경우 계산
calculateA(b, c);
} else if (b == -1) { // b가 비어 있는 경우 계산
calculateB(a, c);
} else if (c == -1) { // c가 비어 있는 경우 계산
calculateC(a, b);
} else { // 모든 값이 주어진 경우 불가능 처리
System.out.println("Impossible.\n");
}
}
// a 계산 (b와 c로부터 계산)
private static void calculateA(double b, double c) {
if (b > 0 && c > 0 && b < c) { // 유효한 삼각형 조건 확인
double aCalculated = Math.sqrt(c * c - b * b); // 피타고라스 정리 적용
System.out.printf("a = %.3f\n\n", aCalculated);
} else { // 삼각형 조건에 맞지 않으면 불가능 출력
System.out.println("Impossible.\n");
}
}
// b 계산 (a와 c로부터 계산)
private static void calculateB(double a, double c) {
if (a > 0 && c > 0 && a < c) { // 유효한 삼각형 조건 확인
double bCalculated = Math.sqrt(c * c - a * a); // 피타고라스 정리 적용
System.out.printf("b = %.3f\n\n", bCalculated);
} else { // 삼각형 조건에 맞지 않으면 불가능 출력
System.out.println("Impossible.\n");
}
}
// c 계산 (a와 b로부터 계산)
private static void calculateC(double a, double b) {
if (a > 0 && b > 0) { // 유효한 삼각형 조건 확인
double cCalculated = Math.sqrt(a * a + b * b); // 피타고라스 정리 적용
System.out.printf("c = %.3f\n\n", cCalculated);
} else { // 삼각형 조건에 맞지 않으면 불가능 출력
System.out.println("Impossible.\n");
}
}
}