https://www.acmicpc.net/problem/1448
1448번: 삼각형 만들기
첫째 줄에 빨대의 개수 N이 주어진다. N은 3보다 크거나 같고, 1,000,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 빨대의 길이가 한 줄에 하나씩 주어진다. 빨대의 길이는 1,000,000보다
www.acmicpc.net
알고리즘 분류
- 수학
- 그리디
- 정렬
풀이
그리디 알고리즘과 정렬을 이용해 문제를 풀었다.
먼저 삼각형의 성립 조건을 알아야 한다.
삼각형의 성립 조건: a, b, c(가장 긴 변)이 있을 때 a + b > c 이어야 삼각형이 성립이 된다.
그래서 입력받은 배열을 정렬 후
뒤에서부터 차례로 삼각형이 성립이 되는지 if 조건문을 사용해 구했다.
Arrays.sort(arr); for (int i = arr.length -1 ; i >=2 ; i--) { int c = arr[i]; int b = arr[i-1]; int a = arr[i-2]; if (a+b > c){ System.out.println(a+b+c); return; } } // for
아래는 전체 정답 코드이다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; 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()); int [] arr = new int [n]; for (int i = 0; i < arr.length; i++) { arr[i] = Integer.parseInt(br.readLine()); } Arrays.sort(arr); for (int i = arr.length -1 ; i >=2 ; i--) { int c = arr[i]; int b = arr[i-1]; int a = arr[i-2]; if (a+b > c){ System.out.println(a+b+c); return; } } // for System.out.println("-1"); } // main }
'BOJ, Programmers' 카테고리의 다른 글
[Java] 백준 1312 번 (소수) 문제 풀이 (0) | 2024.04.10 |
---|---|
[Java] 백준 1543번 (문서 검색) 자바 문제 풀이 (0) | 2024.04.08 |
[Java] 백준 2725번 (보이는 점의 개수) (2) | 2024.04.06 |
[Java] 백준 1449번 (수리공 항승) (0) | 2024.04.06 |
[Java] 백준 1577 (도로의 개수) (2) | 2024.04.05 |