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();
}
}
이번 문제는 직각삼각형의 성질인 피타고라스의 정리를 이용하는 문제였습니다.
피타고라스의 정리에 의해 직각삼각형의 각 변이 a, b, c일 때 c가 빗변이라 하면 c^2 = a^2 + b^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을 출력했습니다.
피타고라스의 정리만 안다면 어렵지 않게 풀 수 있었던 문제였습니다.
출처 : 백준 4153번 링크 https://www.acmicpc.net/problem/4153
삼각형 문제는 풀어도 정우씨 마음속의 삼각형은 무뎌지지 않았으면 하네요;; 항상 응원합니다. 아자아자 홧팅~~~!@#!!!@#!$!@%!