지구정복

[수학] 백준 - 직각삼각형 본문

데이터 엔지니어링 정복/Algorithm

[수학] 백준 - 직각삼각형

nooh._.jl 2021. 7. 22. 16:07
728x90
반응형

 

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

 

4153번: 직각삼각형

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

www.acmicpc.net

 

-문제해설

피타고라스 정리가 성립하면 직각삼각형이다. 이때 주어지는 입력값들 중에서 가장 큰 값이 우변에 있어야 되고

나머지 두 개의 값들이 좌변에 있어야 한다.

x^2 + y^2 = z^2

따라서 입력값을 배열에 저장하고 그 배열을 오름차순으로 정렬해서 피타고라스 정리를 적용한다.

 

-자바

package math;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;

public class BJ4153 {
	private static BufferedWriter bw = 
			new BufferedWriter( new OutputStreamWriter(System.out));
	private static int[] s;
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		while( true ) {
			int[] s = new int[3];
			StringTokenizer st = new StringTokenizer( br.readLine() );
			s[0] = Integer.parseInt( st.nextToken() );
			s[1] = Integer.parseInt( st.nextToken() );
			s[2] = Integer.parseInt( st.nextToken() );
			if( s[0]==0 ) break;
			
			Arrays.sort( s );
			
			if( s[0]*s[0] + s[1]*s[1] == s[2]*s[2] ) bw.write( "right\n" );
			else bw.write( "wrong\n" );
			bw.flush();
		}
		bw.close();
		br.close();
	}
}

 

-파이썬

while True:
    s = list( map( int, input().split() ) )
    if s[0] == 0: break
    s.sort()
    
    if( s[0]**2 + s[1]**2 == s[2]**2): print( "right" )
    else: print( "wrong" )
728x90
반응형
Comments