[백준(JAVA)] 1448번: 삼각형 만들기

세하·2025년 5월 9일

[백준] 문제풀이

목록 보기
56/94
post-thumbnail

문제

✔ 난이도 - Silver 3

설명

빨대의 길이를 기준으로 내림차순을 한 후
https://velog.io/@seha01130/JAVA-ArrayList-정렬하기
순회하며 3개의 수가 삼각형이 되면 그때 길이의 합을 구한다
삼각형이 될 수 있는 조건 : 가장 작은 수 + 그 다음 작은 수 > 가장 큰 수

풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;

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

        int N = Integer.parseInt(br.readLine());
        ArrayList<Integer> list = new ArrayList<>();

        for (int i = 0; i < N; i++){
            list.add(Integer.parseInt(br.readLine()));
        }

        //내림차순
        list.sort(Comparator.reverseOrder());

        int a, b, c;
        for (int i = 0; i < list.size() - 2; i++) {
            a = list.get(i);
            b = list.get(i + 1);
            c = list.get(i + 2);

            // 삼각형 조건: b + c > a (a가 가장 큼)
            if (b + c > a) {
                System.out.println(a + b + c);
                return;
            }
        }

        System.out.println(-1);
    }
}

TIL💡

📌 for문으로 list를 순회할 때 list.get(i)가 끝에 도달하면 끝내게 조건을 걸까 생각했었는데 ArrayList.get(index)는 범위를 벗어나면 null이 아니라 예외를 던지므로 그렇게 조건을 거는 것 보다는 그냥 size()를 구해서 for문을 도는게 더 좋다!

0개의 댓글