int main()
{
int a, b, c;
while(scanf("%d %d %d", &a, &b, &c) && a)
puts(a * a == b * b + c * c || b * b == c * c + a * a || c * c == a * a + b * b ? "right" : "wrong");
return 0;
}
a = b = c 0일 때 반복문을 중단하도록 하는 게 가장 문제의 의도에 맞겠으나
문제가 제시하는 인풋 요건에 따르면, 세 변 모두가 정상적인 테스트라면 양의 정수로 주어진다.따라서 프로그램이 종료되는 시점은 하나의 값이라도 0(실제로는 모든 값이 0)이 되는 시점이기 때문에 반복문의 조건은 a > 0으로 한다.
가장 큰 수가 a가 되도록 스왑을 해야하나, a, b, c값을 먼저 비교해 출력문을 작성해야 하나 살짝 고민했지만여기서 관심사는 수가 어떤 순서로 주어졌는지와 무관하다.그래서 단순히 하나라도 세 변의 조건을 만족한다면 right, 아니라면 wrong을 출력했다.
'문제풀이' 카테고리의 다른 글
[C언어] 1085번 직사각형에서 탈출 (0) | 2022.01.06 |
---|---|
[C언어] 9020번 골드바흐의 추측 (0) | 2022.01.06 |
[C언어] 백준 4948번 베르트랑 공준 (0) | 2022.01.05 |
[C언어] 백준 1929번 소수구하기 (0) | 2022.01.04 |
[C언어] 백준 11653번 소인수분해 (0) | 2022.01.04 |