문제
세 변의 길이가 주어질 때, 직각삼각형인지 판별하라.
입력
여러 줄에 세 정수가 주어지며, 0 0 0이 입력되면 종료한다.
출력
직각삼각형이면 "right", 아니면 "wrong"을 출력한다.
예제
| 입력 | 출력 |
|---|---|
6 8 10 25 52 60 5 12 13 0 0 0 | right wrong right |
풀이
피타고라스 정리로 세 변 중 어느 한 변의 제곱이 나머지 두 변의 제곱합과 같은지 확인한다.
- 세 변 x, y, z에 대해 세 가지 조합을 검사한다
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)