공부/백준(C++) - 2022~

백준 4153번: 직각삼각형[C++]

상연 2022. 1. 20. 20:17

목차

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

 

4153번: 직각삼각형

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

www.acmicpc.net

코드

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

void big_num(int* n1, int* n2)
{
	int temp;
	if(*n1 > *n2)
	{
		temp = *n1;
		*n1 = *n2;
		*n2 = temp;
	}
	
}

int main() {
	int a, b, c;
	cin >> a >> b >> c;
	while(a + b + c != 0)
	{
		big_num(&a, &b);
		big_num(&b, &c);
		if(pow(c, 2) == pow(a, 2) + pow(b, 2)) cout << "right" << endl;
		else cout << "wrong" << endl;
		cin >> a >> b >> c;
	}
}

 

설명

직각삼각형이 되기위해서는 세 변의 길이 중 가장 긴 변의 제곱이 다른 두 변의 제곱의 합과 동일해야한다는것을 

사용해서 풀면 되는 문제이다.

다만, 입력되는 세 변의 길이가 길이순서대로 들어오지 않으므로, 우선적으로 들어오는 데이터 중에서 가장 긴 변을 찾아 분류하는 전처리 작업을 하면 된다.