백준/백준 단계별 문제풀이
백준 4153번 (C++)
FDEE
2020. 8. 30. 23:20
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로 바꾼다