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가지 조건중에 하나라도 맞다면 직각 삼각형이라는 방법을 사용했습니다.

간단한 문제였습니다.

직각 삼각형