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번 인덱스
가 문제에서 원하는 범위이다.
이를 이용해 개수를 구하면 문제를 해결할 수 있다.