공부/백준(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;
    	}
    }

     

    설명

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

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

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