본문 바로가기
백준(C언어)/23년 1월

기하 1 - 4153번

by C0MPAS 2023. 1. 30.

1월 30일(월) - 기하 1 (4153번).....

 

4153번: 직각삼각형

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

www.acmicpc.net

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

문제점

1. 입력받은 3개의 수 중에서 가장 큰 수를 구하는 함수 - 그리고 피타고라스 계산이 성립하는지를 계산하는 함수

이렇게 2가지의 함수로 나누어서 풀이의 방향을 처음에는 생각했으나, max 제외한 2개의 값 설정이 애매해졌다

-> 결국 calculate_result 라는 하나의 함수 안에서 max 값을 찾고, 피타고라스 계산도 동시에 하는것으로 수정

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

풀이

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)

#include <stdio.h>

int calculate_result(int length_1, int length_2, int length_3)
{
	int max, x, y;

	if (length_1 >= length_2 && length_1 >= length_3)
	{
		max = length_1;
		x = length_2;
		y = length_3;
	}
	else if (length_2 >= length_1 && length_2 >= length_3)
	{
		max = length_2;
		x = length_1;
		y = length_3;
	}
	else
	{
		max = length_3;
		x = length_1;
		y = length_2;
	}

	if ((x * x) + (y * y) == (max * max))
	{
		return 1;
	}
	else
	{
		return 0;
	}
}

int main(void)
{
	int length_1, length_2, length_3;

	while (1)
	{
		scanf("%d %d %d", &length_1, &length_2, &length_3);

		if (length_1 == 0 && length_2 == 0 && length_3 == 0)
		{
			break;
		}

		else
		{
			if (calculate_result(length_1, length_2, length_3) == 1)
			{
				printf("right\n");
			}
			else
			{
				printf("wrong\n");
			}
		}
	}

	return 0;
}

'백준(C언어) > 23년 1월' 카테고리의 다른 글

기하 1 - 3009번  (0) 2023.01.30
기하 1 - 1085번  (0) 2023.01.30
집합과 맵 - 10816번  (0) 2023.01.27
집합과 맵 - 1269번  (0) 2023.01.27
집합과 맵 - 1764번  (0) 2023.01.26

댓글