#42. [백준_C언어] 4153 : 직각삼각형

 

 입력 코드 

#include <stdio.h>
#include <math.h>

main() {
	int a, b, c;

	while (1) {
		scanf("%d %d %d", &a, &b, &c);

		if (a != 0 && b != 0 && c != 0){
			if (pow(a, 2) + pow(b, 2) == pow(c, 2))
				printf("right\n");
			else if (pow(b, 2) + pow(c, 2) == pow(a, 2))
				printf("right\n");
			else if (pow(a, 2) + pow(c, 2) == pow(b, 2))
				printf("right\n");
			else
				printf("wrong\n");
		}
		else
			break;
	}
}

 

 코드 설명 

#수학 #기하학 #조건문 #반복문

#include <stdio.h>
#include <math.h>

main() {
	int a, b, c;

	do{
		scanf("%d %d %d", &a, &b, &c);

		if (pow(a, 2) + pow(b, 2) == pow(c, 2))
			printf("right\n");
		else
			printf("wrong\n");
	} 
	while (a != 0);
}

처음에는 do~while문을 이용해서 작성했는데 실패했다. 마지막에 0 0 0 을 입력해도 right가 출력돼서 그런 것 같았다.

#include <stdio.h>
#include <math.h>

main() {
	int a, b, c;

	while (1) {
		scanf("%d %d %d", &a, &b, &c);

		if (a != 0 && b != 0 && c != 0){
			if (pow(a, 2) + pow(b, 2) == pow(c, 2))
				printf("right\n");
			else
				printf("wrong\n");
		}
		else
			break;
	}
}

그래서 while문을 이용해서 0 0 0인 경우에 break하도록 작성했지만 또 틀렸다. 예제에는 c가 모두 가장 긴 변이었지만 그렇다고 해서 가장 긴 변이 c가 아닐 수도 있기 때문이다. (a^2+b^2=c^2 이라는 법이 없기 때문 / b^2+c^2=a^2일 수도 있음)

#include <stdio.h>
#include <math.h>

main() {
	int a, b, c;

	while (1) {
		scanf("%d %d %d", &a, &b, &c);

		if (a != 0 && b != 0 && c != 0){
			if (pow(a, 2) + pow(b, 2) == pow(c, 2))
				printf("right\n");
			else if (pow(b, 2) + pow(c, 2) == pow(a, 2))
				printf("right\n");
			else if (pow(a, 2) + pow(c, 2) == pow(b, 2))
				printf("right\n");
			else
				printf("wrong\n");
		}
		else
			break;
	}
}

그래서 수정했는데 코드가 너무 길어지는 것 같아서 다른 풀이를 찾아봤더니 처음에 각 변의 길이를 제곱해서 새로운 변수를 선언한 다음에 || 기호로 깔끔하게 작성하는 방법도 있었다.

 

 

참고한 사이트

travelerfootprint.tistory.com/55

 

백준 알고리즘 4153번: 직각삼각형 C언어

문제 출처: www.acmicpc.net/problem/4153 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각

travelerfootprint.tistory.com

edu-coding.tistory.com/8

 

c언어 반복문(for, while, do ~ while)

1. 반복문은 특정 조건을 만족하는 동안 계속 반복하여 실행하는 제어문입니다. 반복 제어문에는 for문, while문, do ~ while문이 있습니다. 반복문종류에 대한 표현 형식을 알아 보겠습니다. for 반복

edu-coding.tistory.com

 

 

 

 문제 출처 

www.acmicpc.net/problem/4153

 

4153번: 직각삼각형

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

www.acmicpc.net