본문 바로가기

Algorithm

[Java] 백준 9366번 : 삼각형 분류

1. 문제

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

 

9366번: 삼각형 분류

입력의 첫 줄에는 테스트케이스의 개수 T(1 <= T <= 100)가 주어진다. 다음 T줄에는 각 줄에 삼각형의 세 변을 나타내는 3개의 정수 A,B,C(1 <= A,B,C <= 1,000,000)가 주어진다.

www.acmicpc.net

2. 풀이

- 삼각형을 만들 수 있는 조건을 생각해보고 풀 수 있었다. (삼각형에서 가장 긴 변의 길이는 나머지 두 변의 길이의 합보다 작다는 조건이다.)

  • 가장 큰 숫자를 찾기 위해 배열을 만들어 값을 넣고, 정렬을 한다.
  • 위에 내용과 같이 if문에 작은 값 두 개를 더한 값이 제일 큰 값보다 작거나 같은지 먼저 확인하고, 문제에 나와 있는 대로 조건을 넣고 각각 해당하는 곳에 출력하도록 한다.

3. 코드

package baekjoon;

import java.util.Arrays;
import java.util.Scanner;

public class Q9366 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int t = scanner.nextInt();
        int[] arr = new int[3];

        for (int i = 1; i <= t; i++) {
            for (int j = 0; j < arr.length; j++) {
                arr[j] = scanner.nextInt();
            }
            Arrays.sort(arr);

            if (arr[0] + arr[1] <= arr[2]) {
                System.out.printf("Case #%d: ", i);
                System.out.println("invalid!");
            } else if (arr[0] == arr[1] && arr[0] == arr[2]) {
                System.out.printf("Case #%d: ", i);
                System.out.println("equilateral");
            } else if (arr[0] == arr[1] || arr[0] == arr[2] || arr[1] == arr[2]) {
                System.out.printf("Case #%d: ", i);
                System.out.println("isosceles");
            } else {
                System.out.printf("Case #%d: ", i);
                System.out.println("scalene");
            }
        }
    }
}