[백준] 4153번 : 직각삼각형 - Java(자바)

이정우·2022년 2월 11일
0

백준

목록 보기
31/32

Step 0. 해답 코드

import java.util.Arrays;
import java.util.Scanner;

public class Right_Triangle {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[3];
        while (true) {
            arr[0] = sc.nextInt();
            arr[1] = sc.nextInt();
            arr[2] = sc.nextInt();
            Arrays.sort(arr);
            if (arr[0] == 0 && arr[1] == 0 && arr[2] == 0) {
                break;
            }else if (Math.pow(arr[2], 2) == Math.pow(arr[0], 2) + Math.pow(arr[1], 2)) {
                System.out.println("right");
            }
            else {
                System.out.println("wrong");
            }

        }
        sc.close();
    }
}

이번 문제는 직각삼각형의 성질인 피타고라스의 정리를 이용하는 문제였습니다.

Step 1. 문제 접근

피타고라스의 정리에 의해 직각삼각형의 각 변이 a, b, c일 때 c가 빗변이라 하면 c^2 = a^2 + b^2 이라는 법칙을 갖고 이 법칙을 이용하면 쉽게 풀 수 있겠다 싶었습니다.

Step 2. 문제 해결

풀이 방식은 결정했으니 어떤 방법으로 풀까 하다가 입력 값이 세 개 뿐이라 배열을 사용해서 풀어봤습니다.

arr[0] = sc.nextInt();
arr[1] = sc.nextInt();
arr[2] = sc.nextInt();
Arrays.sort(arr);

빗변은 항상 가장 긴 변이기에 입력 값 중 가장 큰 값을 알아야 했습니다. 그렇기에 arr에 값을 넣고 Arrays.sort를 사용해 내림차순으로 배열의 값들을 정렬해주었습니다.

if (arr[0] == 0 && arr[1] == 0 && arr[2] == 0) {
        break;
}else if (Math.pow(arr[2], 2) == Math.pow(arr[0], 2) + Math.pow(arr[1], 2)) 
{
        System.out.println("right");
}
        else {
        System.out.println("wrong");
}

정렬 후 0, 0, 0이 입력되면 프로그램이 종료되고, 피타고라스의 법칙에 의해 c^2 = a^2 + b^2이면 right를 아니면 wrong을 출력했습니다.

Step 3. 느낀 점

피타고라스의 정리만 안다면 어렵지 않게 풀 수 있었던 문제였습니다.

출처 : 백준 4153번 링크 https://www.acmicpc.net/problem/4153

Git 주소 : https://github.com/LeejeongwooKuma/BaekJoon/blob/master/src/com/leejeongwoo/basicmath2/Right_Triangle.java#L21

profile
프로그래밍 공부 중!

2개의 댓글

comment-user-thumbnail
2022년 2월 15일

삼각형 문제는 풀어도 정우씨 마음속의 삼각형은 무뎌지지 않았으면 하네요;; 항상 응원합니다. 아자아자 홧팅~~~!@#!!!!@#!$!@%!

1개의 답글