정신과 시간의 방
카테고리
작성일
2024. 5. 25. 19:26
작성자
risehyun
  • 문제

 

  • 풀이
#include <iostream>

int main()
{
	int a = 0, b = 0, c = 0, temp = 0;

	while (true)
	{
		std::cin >> a >> b >> c;

		// 모든 값이 0으로 입력될 경우 반복문을 종료한다.
		if (a == 0 && b == 0 && c == 0)
		{
			break;
		}
		
		// 어떤 값이 가장 큰지에 대한 조건이 명시되어 있지 않으므로 임의로 순서를 맞춰줘야 한다.
		if (a > c)
		{
			temp = c;
			c = a;
			a = temp;
		}
		else if (b > c)
		{
			temp = c;
			c = b;
			b = temp;
		}

		// a의 제곱과 b의 제곱 값이 c의 제곱과 같은 경우에만 right를 출력한다.
		if (((a * a) + (b * b)) != (c * c))
		{
			std::cout << "wrong" << '\n';
		}
		else
		{
			std::cout << "right" << '\n';
		}
	}

	return 0;
}

 

  • 메모
    문제를 잘 읽어보면 입력되는 수 중에 어떤 값이 가장 큰지에 대한 조건이 명시되어 있지 않다.
    입력 예제를 보면 c가 a, b보다 큰 경우만 입력되고 있어서 c가 가장 큰 값이 들어올거라고 착각하고 1차 시도를 했는데 자세히 읽어보니 이런 함정이 있었다... 문제를 주의해서 읽도록 해야겠다.

'코딩테스트' 카테고리의 다른 글

★ [백준/1978번/C++] 소수 찾기  (0) 2024.05.27
★ [백준/30802번/C++] 웰컴 키트  (0) 2024.05.26
[백준/10809번/C++] 알파벳 찾기  (0) 2024.05.24
[백준/8958번/C++] OX퀴즈  (0) 2024.05.23
[백준/3052번/C++] 나머지  (0) 2024.05.22