본문 바로가기
문제 풀이/백준(BOJ)

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

by 희조당 2021. 3. 21.
728x90

www.acmicpc.net/problem/4153

 

4153번: 직각삼각형

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

www.acmicpc.net


문제 접근

 1. 세 수를 받은 뒤 최댓값을 찾는다.

 2. 반복문을 이용해서 최댓값이 아니라면 제곱한 값을 임시 변수에다가 더해준다.

 3. 임시 변수와 최댓값의 제곱을 비교한다.

느낀점

처음에는 직관적으로 조건문을 이용해서 코드를 구현했지만 너무 코드가 길고 썩 좋은 방법이 아닌 것 같아서 다른 분들이 한 것을 참고했다. 나와 같은 방법도, or을 활용하는 방법도 있었지만 첫 코드를 작성하면서 같이 구상한 방법과 비슷한 코드를 찾아서 다시 한번 작성해봤다. 여러 알고리즘을 익힌 것 같았다.

코드

#include <stdio.h>

int main() {
	while (1) {
		int arr[3];
		scanf("%d %d %d", &arr[0], &arr[1], &arr[2]);
		if (arr[0] ==0 && arr[1] == 0 && arr[2] == 0) break;
		int max = 0, tmp = 0;
		for (int i = 0;i < 3;i++) {
			if (arr[i] > max) max = arr[i];
		}
		for (int j = 0; j < 3;j++) {
			if (arr[j] != max) tmp += arr[j] * arr[j];
		}

		if (tmp == max * max) printf("right\n");
		else printf("wrong\n");
	}

	return 0;
}

댓글