본문 바로가기

BAEKJOON/수학

백준 4153번 [직각삼각형](C++)-yes6686- 티스토리

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