새벽코딩

[백준] [4153] 직각삼각형 (수학) (JAVA) 본문

알고리즘

[백준] [4153] 직각삼각형 (수학) (JAVA)

J 코딩 2023. 1. 25. 23:18
반응형

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

 

4153번: 직각삼각형

입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.

www.acmicpc.net


시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB 69043 35333 31448 50.859%

문제

과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.

입력

입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.

출력

각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다.

예제 입력 1 복사

6 8 10
25 52 60
5 12 13
0 0 0

예제 출력 1 복사

right
wrong
right

※ JAVA 코드 (직각삼각형)

import java.io.*;
import java.util.*;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		
		double a, b, c;
		int[] arr = new int[3];
		
		while(true) {
			st = new StringTokenizer(br.readLine());
			
			arr[0] = Integer.parseInt(st.nextToken());
			arr[1] = Integer.parseInt(st.nextToken());
			arr[2] = Integer.parseInt(st.nextToken());
			
			Arrays.sort(arr);
			
			a = arr[0];
			b = arr[1];
			c = arr[2];
			
			if(a + b + c == 0) {
				break;
			}
			
			a = Math.pow(a, 2);
			b = Math.pow(b, 2);
			c = Math.pow(c, 2);
			
			if(c == a+b) {
				System.out.println("right");
			} else {
				System.out.println("wrong");
			}
		}
	}
}

※ 생각정리 (직각삼각형)

백준 직각삼각형문제는 수학관련 문제이다.

가끔은 이런 수학관련 문제가 풀고 싶을 떄가 있다. 이번 문제는 피타고라스 정리를 활용하는 문제이다.

직각삼각형이 되기 위한 조건은 가장 긴변의 제곱이 나머지 두변의 제곱의 합과 같을 때이다.

세변을 구하고 각 제곱수를 구하기 위하여 Math.pow() 함수를 사용했다.

만약 세변의 합이 0일때는 반복문을 탈출하도록 로직을 만들었다.

 

-새벽코딩-

반응형
Comments