[프로그래머스] 삼각형의 완성조건 (2) - Java

Yunki Kim·2023년 1월 9일
0

프로그래머스

목록 보기
83/101
post-thumbnail

문제


링크


코드

import java.util.Arrays;

class Solution {
    public int solution(int[] sides) {
        Arrays.sort(sides);
        int hasLongSide = sides[1] - sides[0];
        int hasNotLongSide = sides[1] + sides[0];

        return hasNotLongSide - hasLongSide - 1;
    }
}

리뷰

삼각형의 길이가 가장 긴 변은 나머지 두 변의 길이의 합보다 작아야한다.
삼각형을 만들기 위해 만족해야하는 조건이다.

문제에서 두 변이 주어지고 나머지 한 변이 될 수 있는 수의 개수를 출력하는 문제이다.

그럼 두 가지의 경우를 생각해야한다.

배열 중 큰 수가 가장 긴 변인 경우와 주어지지 않은 수가 가장 긴 변인 경우이다.
Arrays.sort()를 이용해 정렬을 하여 0번, 1번 인덱스로 설명하겠다.

1번 인덱스가 가장 긴 변인 경우
0번 인덱스와 주어지지 않은 변의 길이의 합이 1번 인덱스의 값보다 커야한다.
그렇다면 나올 수 있는 범위는 1번 인덱스 - 0번 인덱스 < x < 1번 인덱스

주어지지 않은 변이 가장 긴 변인 경우
0번 인덱스와 1번 인덱스의 합이 주어지지 않은 변의 값보다 커야한다.
범위는 x < 0번 인덱스 + 1번 인덱스 이다.

이 둘의 경우를 종합하면
1번 인덱스 - 0번 인덱스 < x < 1번 인덱스 + 0번 인덱스가 문제에서 원하는 범위이다.

이를 이용해 개수를 구하면 문제를 해결할 수 있다.

0개의 댓글