본문 바로가기

algorithm/백준알고리즘

[백준알고리즘] 4153번: 직각삼각형 -C++

728x90

[백준알고리즘] 4153번: 직각삼각형 -C++

4153번: 직각삼각형 (acmicpc.net)

 

4153번: 직각삼각형

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

www.acmicpc.net

저번과 마찬가지로 while의 조건문 안에서 cin을 통해서 입력을 받았다.

std::cinistream 객체를 return 하지만 ifwhile의 조건문 안에서는 bool을 return 하게 된다.

istream이 아닌 현재 상태에 따라 좋은 입력 상태일 경우 true를 return 하며 좋지 않은 입력 상태일 경우 false를 return한다.

 

<algorithm> 헤더의 sort를 사용해 입력 값을 정렬시켜주었다.

이때 최댓값이 0이라면 모든 입력된 변의 길이가 \(0\) 인 것이기 때문에 종료를 하게 된다.

 

모든 값이 \(0\) 이 아니라면, 피타고라스의 정리를 이용해서 직각삼각형 여부를 판단한다.

판단 결과로 \(result\)에 출력 string을 저장한 뒤 출력한다.

#include <iostream>
#include <vector>
#include <algorithm>

void solve(void);

int main(void)
{
	solve();
}

void solve(void)
{
	std::vector<int> side(3);
	while (std::cin >> side[0] >> side[1] >> side[2])
	{
		std::sort(side.begin(), side.end());
		
		if (side[2] == 0) break;

		std::string result;
		result = side[0] * side[0] + side[1] * side[1] == side[2] * side[2] ? "right" : "wrong";

		std::cout << result << std::endl;
	}
}

 

잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다

728x90