728x90
SMALL
백준 문제 풀이: 4153 [직각삼각형]
문제 링크: https://www.acmicpc.net/problem/4153
문제 설명:
세 변의 길이가 주어졌을 때, 해당 변들이 직각삼각형을 이룰 수 있는지 판단하는 문제입니다. 직각삼각형은 피타고라스의 정리를 만족해야 합니다: a² + b² = c²
(여기서 c는 가장 긴 변).
입력으로 세 변의 길이가 0이 들어오면 프로그램을 종료합니다. 직각삼각형이면 right
를, 그렇지 않으면 wrong
을 출력합니다.
문제 해결 코드
#include <iostream>
using namespace std;
int main() {
int a, b, c;
while (1) {
cin >> a >> b >> c;
if (a == 0 || b == 0 || c == 0) {
break;
}
if (a > b) swap(a, b);
if (b > c) swap(b, c);
if (a * a + b * b == c * c) {
cout << "right" << endl;
} else {
cout << "wrong" << endl;
}
}
}
코드 설명
- 핵심 알고리즘: 피타고라스의 정리를 만족하는지 검사
- 구현 세부사항:
- 입력된 세 변 중 가장 긴 변을
c
로 설정 - 가장 긴 변
c
에 대해 나머지 두 변이a
,b
로 설정된 상태에서 조건a² + b² = c²
확인 - 입력이 모두 0이면 프로그램 종료
- 입력된 세 변 중 가장 긴 변을
- 시간 복잡도: O(1) (각 입력에 대해 상수 시간 연산 수행)
결과
주어진 세 변이 직각삼각형을 이루는 경우 right
를 출력하고, 그렇지 않은 경우 wrong
을 출력합니다. 간결한 비교와 조건 검사를 통해 효율적으로 문제를 해결했습니다.
다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!
728x90
LIST
'BAEKJOON > 수학' 카테고리의 다른 글
백준 11689번 [GCD(n, k) = 1](C++)-yes6686- 티스토리 (0) | 2024.01.04 |
---|---|
백준 10814번 [나이순 정렬](C++)-yes6686- 티스토리 (0) | 2024.01.03 |
백준 2869번 [달팽이는 올라가고 싶다](C++)-yes6686- 티스토리 (0) | 2024.01.03 |
백준 2751번 [수 정렬하기 2](C++)-yes6686- 티스토리 (0) | 2024.01.02 |
백준 2609번 [최대공약수와 최소공배수](C++)-yes6686- 티스토리 (0) | 2024.01.02 |