https://www.acmicpc.net/problem/1448
1448번: 삼각형 만들기
첫째 줄에 빨대의 개수 N이 주어진다. N은 3보다 크거나 같고, 1,000,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 빨대의 길이가 한 줄에 하나씩 주어진다. 빨대의 길이는 1,000,000보다
www.acmicpc.net
문제
코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Integer arr[] = new Integer[n];
for(int i=0;i<n;i++) {
arr[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr,Collections.reverseOrder());
for(int i=0;i<n-2;i++) {
if(arr[i]<arr[i+1]+arr[i+2]) {
System.out.println(arr[i] + arr[i + 1] + arr[i + 2]);
return;
}
}
System.out.println(-1);
}
}
해결방법
삼각형이 될 수 있는 조건은 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 더 커야 한다.
만들 수 있는 삼각형 중 세 변의 길이가 가장 크려면 입력 받은 빨대의 길이를 정렬하고 가장 긴 변의 길이를 정렬된 배열을 토대로 낮추면서 삼각형이 될 수 있는 세 변의 최댓값을 찾아주면 된다.
'알고리즘 > 백준' 카테고리의 다른 글
13164번 : 행복 유치원 (0) | 2022.09.08 |
---|---|
15903번 : 카드 합체 놀이 (0) | 2022.09.07 |
7795번 : 먹을 것인가 먹힐 것인가 (0) | 2022.08.31 |
2468번 : 안전 영역 (0) | 2022.08.27 |
7562번 : 나이트의 이동 (0) | 2022.08.25 |