Scroll indicator done
728x90

https://www.acmicpc.net/problem/1548

 

1548번: 부분 삼각 수열

세 수 x, y, z가 x+y>z, x+z>y, y+z>x의 관계를 만족하면, 세 수는 삼각관계에 있다고 한다. 마찬가지로 길이가 N인 수열 B(b[0], b[1], ..., b[n-1])의 모든 b[i], b[j], b[k]가 삼각관계에 있으면 이 수열은 삼각

www.acmicpc.net

 

 

풀이

참고
https://byeongyeon.tistory.com/129#google_vignette

 

백준 - 부분 삼각 수열

문제 설명 길이가 N인 배열이 주어진다. 삼각 수열의 최대 길이를 구하는 프로그램을 작성하시오. 삼각 수열이란 a[0], a[1] …. a[n-1]의 배열에서 b[i], b[j], b[k]가 삼각 관계에 있으면 삼각 수열이다.

byeongyeon.tistory.com

 

 

 

코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

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];
        String[] strArray = br.readLine().split(" ");
        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(strArray[i]);
        }

        System.out.println(solution(n, arr));
    }

    public static int solution(int n, int[] arr) {
        Arrays.sort(arr);
        int maxLength = Math.min(n, 2);

        for (int i = 0; i < n - 1; i++) { // 앞에서부터 탐색
            for (int j = n - 1; j >= 0; j--) { // 뒤에서부터 탐색
                if(i + 1 == j) break;  // 같은 수를 검사하지 않게

                if (arr[i] + arr[i + 1] > arr[j]) {
                    maxLength = Math.max(maxLength, j - i + 1);
                    break;
                }
            }
        }

        return maxLength;
    }
}

728x90

'BAEKJOON > Java' 카테고리의 다른 글

[B1503][세 수 고르기][java]  (0) 2023.10.10
[B12919][A와 B 2][java]  (0) 2023.10.09
[B1149][RGB거리][java]  (0) 2023.10.08
[B14620][꽃길][Java]  (0) 2023.10.08
[B1325][효율적인 해킹][java]  (0) 2023.10.08