입력
출력
처음에는 길이마다 a,b,c로 세변의 길이가 같을 때, 두변의 길이만 같을 때, 모두 다를 때 나눠서 생각했는데 오류
다시 생각해보니 정렬하면 쉽게 해결 가능!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
//Scanner로 하면 시간 초과 -> BufferReader로 처리하니깐 정답
public class Code1448 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Integer[] length = new Integer[n];
for (int i = 0; i < n; i++) {
length[i] = Integer.parseInt(br.readLine());
}
int max = 0;
// 삼각형 생성 조건: 가장 긴 변의 길이가 나머지 두변의 길이 합보다 짧다
Arrays.sort(length, Collections.reverseOrder());
for (int i = 0; i < n - 2; i++) {
// 배열을 정렬했기때문에 길이별로 인덱스로 접근 가능
if (length[i] < length[i + 1] + length[i + 2]) {
max = Math.max(max, length[i] + length[i + 1] + length[i + 2]);
}
}
if (max == 0) {
max = -1;
}
System.out.println(max);
}
}