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

