본문 바로가기
백준/C

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

by 대니스 2022. 8. 2.

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

 

4153번: 직각삼각형

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

www.acmicpc.net

 

소스 코드 :

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
void tri(int a, int b, int c)
{
if (pow(a, 2) == pow(b, 2) + pow(c, 2))
printf("right\n");
else if (pow(b, 2) == pow(a, 2) + pow(c, 2))
printf("right\n");
else if (pow(c, 2) == pow(b, 2) + pow(a, 2))
printf("right\n");
else printf("wrong\n");
}
int main()
{
int a, b, c = 0;
while (1) {
scanf("%d %d %d", &a, &b, &c);
if (a == 0 && b == 0 && c == 0)
break;
tri(a, b, c);
}
return 0;
}

 

마무리 : 직각삼각형에서 빗변은 세 변 중에서 제일 길다. 그리고 직각삼각형인지 알기 위해서 피타고라스의 정리(a^2+b^2=c^2)를 이용해야한다.

 하지만 위의 코드는 하나의 변을 기준으로 일일이 피타고라스의 정리를 이용하여 직각삼각형이 맞는지 확인하는 코드다. 위와 같이 해도 되지만 코드만 길어지고 비효율적이므로 세 변 중 최대 길이를 고르고 피타고라스의 정리를 이용하면 좋다.

'백준 > C' 카테고리의 다른 글

백준 2292번 : 벌집 [C]  (0) 2022.08.02
백준 2231번 : 분해합 [C]  (0) 2022.08.02
백준 1085번 : 직사각형에서 탈출 [C]  (0) 2022.08.01
백준 1157번 : 단어 공부 [C]  (0) 2022.07.27
백준 8958번 : OX퀴즈 [C]  (0) 2022.07.27