BOJ 4153
2020-02-07
위 문제는 백준 사이트의 알고리즘 4153 문제에 관한 설명입니다.
문제
과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다.
주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.
입력
입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다.
각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.
출력
각 입력에 대해 직각 삼각형이 맞다면 “right”, 아니라면 “wrong”을 출력한다.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
int X = sc.nextInt();
int Y = sc.nextInt();
int Z = sc.nextInt();
if (X == 0 && Y == 0 && Z == 0)
break;
else {
if ((X * X + Y * Y == Z * Z) || (X * X + Z * Z == Y * Y) || (Z * Z + Y * Y == X * X))
System.out.println("right");
else
System.out.println("wrong");
}
}
}
}
제가 푼 소스코드입니다.
코드 설명
피타고라스 정리를 이용했습니다.
예를들어 “가로 X, 세로 Y의 제곱한 길이의 합은 빗변 Z의 길이와 같다”를 수식으로 표현하면,
X * X + Y * Y = Z * Z 입니다.
여기서 빗변이 어떤 것인지 모르기에 가장 큰 변수를 저장하거나 하는 방법도 있습니다만,
저는 | 를 사용해서 3가지 조건중에 하나라도 맞다면 직각 삼각형이라는 방법을 사용했습니다. |
간단한 문제였습니다.