© 2025 anveloper.dev
GitHub·LinkedIn·Contact

목차

  • 문제
  • 입력
  • 출력
  • 예제
  • 풀이
  • 코드
  • 복잡도
풀이 목록으로 돌아가기

BOJ 4153 - 직각삼각형

2023-09-29
BOJ
브론즈 III
java
원본 문제 보기
수학
기하학
피타고라스 정리

문제

BOJ 4153 - 직각삼각형

세 변의 길이가 주어질 때, 직각삼각형인지 판별하라.

입력

여러 줄에 세 정수가 주어지며, 0 0 0이 입력되면 종료한다.

출력

직각삼각형이면 "right", 아니면 "wrong"을 출력한다.

예제

입력출력
6 8 10 25 52 60 5 12 13 0 0 0right wrong right

풀이

피타고라스 정리로 세 변 중 어느 한 변의 제곱이 나머지 두 변의 제곱합과 같은지 확인한다.

  1. 세 변 x, y, z에 대해 세 가지 조합을 검사한다
  2. x² + y² == z² 또는 x² == y² + z² 또는 y² == z² + x² 중 하나라도 성립하면 직각삼각형이다

핵심 아이디어: 어느 변이 빗변인지 모르므로 세 가지 경우를 모두 검사한다.

코드

package day649;
 
import java.io.*;
import java.util.*;
 
public class Day602BOJ4153직각삼각형 {
  public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringBuilder sb = new StringBuilder();
 
    while (true) {
      StringTokenizer st = new StringTokenizer(br.readLine(), " ");
 
      int x = Integer.parseInt(st.nextToken());
      int y = Integer.parseInt(st.nextToken());
      int z = Integer.parseInt(st.nextToken());
 
      if (x == 0 && y == 0 && z == 0)
        break;
 
      if ((x * x + y * y) == z * z) {
        sb.append("right").append('\n');
      } else if (x * x == (y * y + z * z)) {
        sb.append("right").append('\n');
      } else if (y * y == (z * z + x * x)) {
        sb.append("right").append('\n');
      } else {
        sb.append("wrong").append('\n');
      }
 
    }
    System.out.println(sb);
  }
}

복잡도

  • 시간: O(T) - T는 테스트 케이스 수
  • 공간: O(1)