공부하기/백준

[Java] 백준 풀기 14215 - 세 막대

XEV 2023. 7. 31. 22:40

자바 백준 14215번

브론즈 3

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

 

14215번: 세 막대

첫째 줄에 a, b, c (1 ≤ a, b, c ≤ 100)가 주어진다.

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 수학, 구현, 기하학

 

 

 

 

 

문제 풀기

세 개의 막대를 오름차순 정렬하여 짧은 두 개와 긴 한 개의 막대기를 비교한다.

 

짧은 두 개의 합이 긴 하나보다 크면 삼각형을 이루기 때문에 세 개의 합을 출력한다.

그렇지 않고 짧은 두 개의 합이 긴 것보다 작으면 긴 막대기를 잘라서 삼각형을 만들어야 한다.

이때, 삼각형 둘레의 최대 길이는 짧은 두 개의 합에서 정수 1만큼 줄어든 나머지 막대일 때 최대가 되기 때문에 이를 이용하여 결과를 출력한다.

 

 

 

 

 

코드 보기

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

public class Main {
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int[] sticks = new int[3];
        
        // 막대의 길이 입력
        for (int i = 0; i < 3; i++) {
            sticks[i] = sc.nextInt();
        }
        
        // 막대의 길이를 오름차순으로 정렬
        Arrays.sort(sticks);
        
        // 세 변 중 짧은 두 변의 길이의 합이 마지막 변의 길이보다 큰지 확인
        if (sticks[0] + sticks[1] > sticks[2]) {
            // 성립되면 삼각형이므로 세 변의 길이를 모두 더한 값을 출력
            System.out.println(sticks[0] + sticks[1] + sticks[2]);
        } else {
            // 삼각형이 성립되지 않으면 작은 두 변의 길이 합에 -1을 하여 나머지 변으로 지정
            System.out.println((sticks[0] + sticks[1]) * 2 - 1);
        }
    }
    
}