백준/백준 단계별 문제풀이

백준 4153번 (C++)

FDEE 2020. 8. 30. 23:20

www.acmicpc.net/problem/4153

 

4153번: 직각삼각형

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

www.acmicpc.net

<답안>

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int array[3];
    bool end = false;
    cin>>array[0]>>array[1]>>array[2];
    while(!end)
    {
        sort(array,array+3);
        if(array[2]*array[2] == array[0]*array[0] + array[1]*array[1])
        {
            cout<<"right\n";
        }
        else
            cout<<"wrong\n";
        cin>>array[0]>>array[1]>>array[2];
        for(int i=0; i<3; i++)
        {
            if(array[i] != 0)
                break;
            else
            {
                if(i == 2)
                    end = true;
            }
        }
    }
    return 0;
}

 

<설명>

입력받은 숫자를 오름차순으로 정렬한 뒤,

가장 큰 숫자의 제곱이 나머지 두 숫자의 제곱의 합과 같다면 right

같지 않다면 wrong을 출력한다

새로 입력을 받아 인덱스 i를 0부터 2까지 증가시키며

만약 array[i] 값이 0이 아닌경우는 break로 나와 다음숫자를 입력받는다

0인경우 중에 i가 2인 경우는 세번째까지 0이므로 전체 while문 탈출을 위한 end 값을 true로 바꾼다

 

'백준 > 백준 단계별 문제풀이' 카테고리의 다른 글

백준 1002번 (C++)  (0) 2020.09.01
백준 3053번 (C++)  (0) 2020.09.01
백준 3009번 (C++)  (0) 2020.08.30
백준 1085번 (C++)  (0) 2020.08.30
백준 9020번 (C++)  (0) 2020.08.30