코딩테스트 & 문제 풀이

[Java]백준_14215 : 세 막대

Hicecream 2025. 3. 25. 23:05

 

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

 

 

 

 

문제 분석

삼각형의 성립 조건식을 알아야 풀 수 있는 문제이다.

삼각형 성립 조건 : 가장 긴 변의 길이가 나머지 두 변의 합보다 작아야 한다.

 

 

 

소스 코드 (⭕)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());

        int[] arr = new int[3];
        for (int i = 0; i < 3; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(arr);

        int k = (arr[0] + arr[1]) > arr[2] ? arr[2] : arr[0] + arr[1] - 1;

        System.out.println(arr[0] + arr[1] + k);
    }
}

 

코드 분석

(편의상 가장 긴 변의 길이를 k라고 지칭하겠다.)

 

1. 삼각형 세 변의 길이를 배열에 입력받고, 길이순으로 정렬해준다.

 

2. 삼각형의 둘레를 최대로 해야 하기 때문에 k만 삼각형 성립 조건에 맞게 조절해주면 된다.

 

3. 삼항연산자를 이용하여, 나머지 두 변의 길이가 k보다 크다?

    3-1. (참) ->  삼각형 성립 조건 만족 O -> 가장 긴 변의 길이는 그대로 k

    3-2. (거짓) -> 삼각형 성립 조건 만족 X -> 가장 긴 변의 길이는 나머지 두 변의 길이의 합에서 -1만 해주면 조건을 성립하면서 제일 긴 변의 길이가 된다.

 

4. 따라서, 삼각형 최대 둘레는 arr[0] + arr[1] + 새로 구한 c가 된다.

 

 

 

end

오랜만에 코테 포스팅을 했는데 설명하는 실력이 퇴화한 것 같다.

열심히 해보자