[Java] 백준(브론즈-3) 4153번 - 직각삼각형

문제 풀이
이번 문제는 피타고라스 정리의 개념만 알고 있다면 큰 문제없이 풀 수 있을 것이다.
피타고라스의 정리란?
직각을 낀 두변의 길이를 a, b라고 하고, 빗변의 길이를 c라고 했을 때a^2 + b^2 = c^2
가 성립된다.
문제에서 유의할 점은 a, b, c의 위치가 특정되지 않았기에 별도로 정렬을 해야한다.
아이디어 도출
- 공백을 기준으로 세 변의 길이값을 입력받아 배열에 저장한다.
- 빗변의 길이가 가장 긴게 c이기에 배열을 오름차순으로 정렬하여 작은 값부터 큰 값 순서대로 a, b, c로 정한다.
- 피타고라스 정리 공식을 활용해 직각삼각형 여부를 판단한다.
주어지는 세 변의 길이 중 가장 긴 길이를 c로 정한다면 피타고라스 정리 공식을 이용해 직각삼각형 여부를 알 수 있다.
바로 코드를 작성해보자.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
while(true) {
StringTokenizer st = new StringTokenizer(br.readLine());
int[] arr = new int[3];
for(int i=0; i<arr.length; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
int a = arr[0];
int b = arr[1];
int c = arr[2];
if(a==0 && b==0 && c==0) break;
if(Math.pow(a, 2) + Math.pow(b, 2) == Math.pow(c, 2)) bw.write("right"+"\n");
else bw.write("wrong"+"\n");
}
공백을 기준으로 한 줄에 세 변의 길이를 입력받아 배열에 저장하고 해당 배열을 오름차순으로 정렬한 뒤 순서대로 a, b, c에 대입한다.
그리고 피타고라스 정리 공식 a^2 + b^2 = c^2
을 적용하여 주어진 삼각형이 직각삼각형인지 판단하여 맞다면 “right”를, 틀리다면 “wrong”를 출력하면 된다.
작성코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
while(true) {
StringTokenizer st = new StringTokenizer(br.readLine());
int[] arr = new int[3];
for(int i=0; i<arr.length; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
int a = arr[0];
int b = arr[1];
int c = arr[2];
if(a==0 && b==0 && c==0) break;
if(Math.pow(a, 2) + Math.pow(b, 2) == Math.pow(c, 2)) bw.write("right"+"\n");
else bw.write("wrong"+"\n");
}
bw.flush();
bw.close();
br.close();
}
}
회고
- 주어진 세 변의 길이가 특정되지 않았기에 배열 정렬을 활용해 세 변 a, b, c를 정하여 직각삼각형 여부를 알아낼 수 있었다.
출처
- 해당 문제의 저작권은 문제를 만든이에게 있으며 자세한 내용은 문제 링크에서 참조바랍니다.