[BOJ] 1448 - 삼각형 만들기

suhyun·2022년 7월 15일
0

백준/프로그래머스

목록 보기
21/81

문제 링크

1448-삼각형 만들기

문제 설명

입력

  • 빨대의 갯수 N
  • N개의 빨대의 길이

출력

  • 삼각형 세변의 길이 합의 최댓값
  • 삼각형을 만들 수 없다면 -1

문제 풀이

처음에는 길이마다 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);
    }
}

profile
꾸준히 하려고 노력하는 편 💻

0개의 댓글