https://www.acmicpc.net/problem/4153
[ 문제 ]
과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다.
주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.
[ 입력 ]
입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다.
각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.
[ 출력 ]
각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다.
[ 입출력 예시 ]
예제 입력 | 예제 출력 |
---|---|
6 8 10 25 52 60 5 12 13 0 0 0 | right wrong right |
처음에 변의 길이가 오름차순으로 입력되는건가 이해하지 못해서 일단 랜덤으로 값이 주어진다는 조건하에 문제를 풀었다
(솔직히 sort만 시키면 되는거라 그리 어렵진 않다)
- 세 변의 길이를 받을 배열 변수(dist)를 선언하였다.
- 세 값이 모두 0 0 0 이 입력될 때까지 무한 루프를 돌려 값을 받아준다.
- Math.pow(값, 제곱 수)를 이용하여 dist[0]과 dist[1]의 제곱 값의 합은 dist[2]의 제곱 수와 같은지 확인하여 같으면 "rigth"값을 그렇지 않다면 "wrong"값을 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int[] dist = new int[3];
while(true) {
dist[0] = Integer.parseInt(st.nextToken());
dist[1] = Integer.parseInt(st.nextToken());
dist[2] = Integer.parseInt(st.nextToken());
if(dist[0] == 0 && dist[1] == 0 && dist[2] == 0) {
break;
}
else if (dist[0] == 0 || dist[1] == 0 || dist[2] == 0) {
System.out.println("wrong");
}
else {
Arrays.sort(dist);
if( Math.pow(dist[0], 2) + Math.pow(dist[1], 2) == Math.pow(dist[2], 2)) {
System.out.println("right");
}
else {
System.out.println("wrong");
}
}
st = new StringTokenizer(br.readLine(), " ");
}
}
}