선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.
경우의 수는 크게 2가지. 주어진 sides 중 큰 값이 가장 긴 변이거나, 찾아야 하는 나머지 한 변이 가장 긴 변이거나. 이를 확인하기 위해 우선 둘중 큰 값과 작은 값을 Math의 메서드로 찾아 변수에 각각 대입해 주었다.
다음으로는 경우의 수에 맞게 범위를 지정해 주어야 했다. sides 중 큰 값이 가장 긴 변인 경우에는 큰 - 작 < x <= 큰이 되고, x가 가장 긴 변인 경우엔 큰 <= x <큰 + 작이 된다. 이때 x의 범위에 겹치는 값이 존재할 수도 있을 것 같아서 중복을 허용하지 않는 set 객체를 사용했고, 개수 반환은 size() 메서드를 사용했다.
import java.util.HashSet;
import java.util.Set;
class Solution {
public int solution(int[] sides) {
Set<Integer> counts = new HashSet<>();
int Max = Math.max(sides[0], sides[1]);
int Min = Math.min(sides[0], sides[1]);
for(int i=Max - Min + 1; i<=Max; i++){
counts.add(i);
}
for(int i=Max; i<Max + Min; i++){
counts.add(i);
}
return counts.size();
}
}
