Skip to content

21.03.02 [Codility] Triangle #183

@blossun

Description

@blossun

아이디어

  1. 오름차순 정렬
  2. 정렬 된 상태 이면 아래는 무조건 만족하므로 A[P] + A[Q] > A[R] 에 대해서만 체크
A[R] + A[P] > A[Q] (첫번째, 마지막 합은 중간보다 항상 큼)
A[Q] + A[R] > A[P] (중간, 마지막 합은 첫번째보다 항상 큼)

어려운점 & 실수

  • 배열 크기가 3이하 일 경우 처리 필요
  • 각 요소의 범위가 정수 최소 ~ 최대 이므로 더했을 경우 long 형으로 처리해야 함

정답

import java.util.Arrays;

public class Triangle {
    public int solution(int[] A) {
//        0 ≤ P < Q < R < N
        if (A.length < 3) {
            return 0;
        }
        Arrays.sort(A);
        //A[P] + A[Q] > A[R] 확인
        for (int i = 0; i < A.length - 2; i++) {
            long P = A[i], Q = A[i + 1], R = A[i + 2];
            if (P + Q > R) {
                return 1;
            }
        }

        return 0;
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions