본문 바로가기
CodingTest/백준

백준 4153번 - 직각삼각형

by 마운틴케이 2023. 9. 22.

https://www.acmicpc.net/problem/4153

 

4153번: 직각삼각형

입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.

www.acmicpc.net

 


문제 분석

입력 받은 3개의 변 길이를 통해 삼각형을 만든다.

그 삼각형이 직각 삼각형인지를 판단해 직각삼각형일 경우 right, 아닐 경우 wrong을 출력하면 된다.

 


풀이

1. 입력으로 0, 0, 0이 들어오기 전 까지는 계속해서 답을 출력해야 하므로 while(true)로 반복문 생성,
   이 반복문 내에 코드 작성

2. 변 세개를 받을 int 배열 arr 생성하여 Scanner로 정수 3개 입력 받음

3. 0, 0, 0 입력 시 빠져나오도록하는 분기 작성

4. 두개의 변 길이가 같을 경우는 이등변 삼각형이 되기 때문에 직각이 만들어질 수 없음. wrong 분기 처리

5. 직각삼각형 구하는 공식을 이용하여 right 여부 판단

   가장 긴 변^2 = 변a^2 + 변b^2

https://www.dongascience.com/news.php?idx=25234 

 

둘레도 넓이도 같은 두 삼각형을 찾아라!

세 변의 길이가 모두 정수인 직각삼각형과 이등변삼각형이 둘레와 넓이가모두 같을 수가 있을까요? 있다면 몇 개나 있을까요? 최근 일본 대학원생들이삼각형의 성질에 관한 재밌는 연구 결과를

www.dongascience.com


코드

public class Example4153 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StringBuffer bf = new StringBuffer();
        while(true) {
            int[] arr = new int[3];
            for (int i = 0; i < arr.length; i++) {
                arr[i] = sc.nextInt();
            }

            if (arr[0] == 0 && arr[1] == 0 && arr[2] == 0) {
                System.out.println(bf.toString());
                return;
            }

            if (arr[0] == arr[1] && arr[0] == arr[2]) {
                bf.append("wrong\n");
                continue;
            }
            
            int max = 1;
            Arrays.sort(arr);
            if (Math.pow(arr[2], 2) == Math.pow(arr[0], 2) + Math.pow(arr[1],2)) {
                bf.append("right\n");
            } else {
                bf.append("wrong\n");
            }
        }
    }
}

댓글 피드백은 언제나 환영합니다!

'CodingTest > 백준' 카테고리의 다른 글

백준 9012번 - 괄호  (0) 2023.09.28
백준 10845 - 큐  (0) 2023.09.28
백준 1654번 - 랜선 자르기  (0) 2023.09.22
백준 10828번-스택(JAVA)  (0) 2020.09.13
백준 1920번, 10815번-수 찾기, 숫자카드(JAVA)  (0) 2020.09.11