렝무식

[백준 4153번] 직각삼각형 (JAVA) 본문

Algorithm/Baekjoon

[백준 4153번] 직각삼각형 (JAVA)

렝9 2023. 1. 12. 18:53

BOJ - [4153] 직각삼각형


image


🖍 입력으로 세 변의 길이가 주어지면 해당 변으로 이루어지는 삼각형이 직각삼각형인지 판별하는 문제
(link) 4153 직각삼각형


[풀이 과정]

중학교 수준의 수학 문제. 요즘은 초등학교 고학년들이 알지도 모른다.
내가 아무리 수포자라지만 피타고라스 정리를 모를 정도는 아니다.
지금 이 글을 보고 있는 사람이라면 이정도 수학 지식을 모를리가 없기 때문에 바로 코드로 구현해보겠다.

 

우선 세 변의 길이를 저장하기 위해 크기 3의 배열을 선언한다.
그리고 이 문제에서는 테스트 케이스 개수가 주어지지 않았기 때문에 while문을 이용하여 0 0 0 이 주어질 때까지 반복하게끔 한다. (do while문을 써도 괜찮을까? 일단 나는 while문의 조건을 true로 설정한 뒤 while구문 안쪽에서 종료 조건을 제시했다)

 

반복문 안 쪽에서 세 변의 길이로 배열을 채운 뒤 배열을 정렬해준다. 왜냐하면 .. 작은 두 변의 제곱 길이 합이 제일 긴 변의 제곱 길이와 같아야하기 때문에 크기대로 정렬해주면 편하다.

그리고 조건문을 통해서 종료 조건을 제시한다. 배열의 어떤 값이라도 0이 들어오면 바로 반복문이 종료되도록 한다.

 

각 변의 제곱 길이를 변수에 넣는다. 이때 사용하는 메소드는 Math.pow()이며 주의할 점은 반환값이 double형이라서 int로 형변환을 해주어야 int 변수에 저장된다는 점이다.

 

제곱한 값들이 각각 저장되었으면 거의 다 됐다.
조건문으로 x + y = z인지 확인하여 직각삼각형인지 아닌지 판별하면 끝이다.


[Pseudocode]

1. 세 변의 길이를 저장할 배열 array 선언
2. while
    3. for i=0 부터 3까지
    4. array[i]에 입력 받아 저장
5. 배열 오름차순 정렬
6. if(array[0] == 0)
    7. break
8. x = array[0]^2
9. y = array[1]^2
10. z = array[2]^2
11. if(x+y=z)
    12. right 출력
13. else
    14. wrong 출력  

[Code]

import java.util.*;

/**
 * 백준 4153번
 * 직각삼각형
 * 분류 : 수학, 기하학
 */
public class Problem8 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int[] array = new int[3]; // 세 변의 길이 저장

        // 0 0 0이 입력될 때까지 반복
        while (true) {
            for(int i=0 ; i<3 ; i++)
                array[i] = input.nextInt();

            Arrays.sort(array); // 배열을 오름차순으로 정렬

            if(array[0] == 0) // 종료 조건
                break;

            // 피타고라스 정리 사용
            int x = (int)Math.pow(array[0], 2);
            int y = (int)Math.pow(array[1], 2);
            int z = (int)Math.pow(array[2], 2);
            if(x + y == z)
                System.out.println("right");
            else
                System.out.println("wrong");
        }
        input.close();
    }
}

[Result]

image


(2021.07.20 풀이분)

첫번째 제출에서는 배열 정렬을 안했음 바보

Comments