PS/백준

백준 / 수학 / 4153번 / 직각삼각형 / C++

KimMinJun 2021. 9. 9. 22:53

문제

과거 이집트인들은 각 변들의 길이가 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

 

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	
	int arr[3];
	string result;
	
	while(true) {
		cin >> arr[0] >> arr[1] >> arr[2];
	
		sort(arr, arr+3);
	
		int a = arr[0];
		int b = arr[1];
		int c = arr[2];
		
		if(!a && !b && !c) break;
	
		result = (a*a + b*b) == c*c ? "right" : "wrong";
	
		cout << result << '\n';	
	}
	
	
	return 0;
}

직각삼각형의 조건은 a^2 + b^2 = c^2이다.(단, c가 제일 큰 값이어야한다)

따라서 입력받은 값들을 오름차순으로 정렬해주고, 맨 마지막값을 c로잡아주면 된다.

 

그 이후는 조건에 맞게 출력해주면 된다