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

Boknami·2022년 1월 22일
0

백준문제풀이

목록 보기
9/45

📑문제

3개의 변 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다. 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다.


👀 핵심 포인트

1. 마지막 입력이 0 0 0 일때까지

-> 반복에 횟수를 알고 있을 때는 단순히 for반복문을 사용해서 문장을 구성하면 편하지만 사용자가 0 0 0을 언제 입력할지 알 수 없으니 while문을 이용해서 입력이 0 0 0 이 아닐 경우 반복문을 실행하도록 코드를 구성했다.

2.직각삼각형인지 어떻게 판단할것인가

피타고라스 정리를 기반으로 하여 직각삼각형인지에 대한 유무를 판단하였다. 처음 고민한 부분은 입력 받은 3개의 변수들을 한 번 정렬을 하고 작은 2개의 숫자를 제곱한 것이 가장 큰 수 인 것을 이용하여 풀려고 하였으니 어렵지 않은 문제에서 코드가 너무 길어질 것 같아 잠깐 고민을 하였다. 그래서 그냥 단순하게 조건문 if else를 이용해서 정렬 없이 직각 삼각형인지 아닌지를 판단할 수 있게 코드를 구성했다.


🤦‍♀️틀린 이유🤦‍♂️

정상 정답!


😮 느낀 점

간단한 문제 같은 경우도 가장 먼저 생각나는 부분이 길고 비효율적인 것도 많이 생각나는데, 만족하지 않고 다른 좋은 방법이 없을까 고민하는 습관이 좋은 것 같다.


🧾 전체 코드

#define _CRT_SECURE_NO_WARNINGS 
#include<stdio.h>

int main()
{
	int A = 1;
	int B = 1;
	int C = 1;

	while (A != 0 && B != 0 && C != 0)
	{
		scanf("%d %d %d", &A, &B, &C);

		if (A != 0 && B != 0 && C != 0)
		{
			if ((A * A) + (B * B) == (C * C))
			{
				printf("right\n");
			}
			else if ((C * C) + (B * B) == (A * A))
			{
				printf("right\n");
			}
			else if ((C * C) + (A * A) == (B * B))
			{
				printf("right\n");
			}
			else
			{
				printf("wrong\n");
			}
		}
	}
}

0개의 댓글