문제 설명
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- sides의 원소는 자연수입니다.
- sides의 길이는 2입니다.
- 1 ≤ sides의 원소 ≤ 1,000
풀이
const solution = (sides) => {
sides.sort((a,b) => b-a);
const min = sides[0] - sides[1] + 1;
const max = sides[0] + sides[1];
let side = 0;
for(let i = min; i < max; i ++) side ++;
return side;
}
삼각형의 변은, 가장 긴변이 나머지 두변의 합보다 작아야 한다.
이를 이용해서, 우선 sort() 매서드를 이용해서 주어진 두변에서 더 긴 변과 짧은 변을 구해준 뒤,
최소인 경우 - 큰변에서 짧은변을 빼준 뒤 나머지 두변의 합보다 커야 하니까 +1을 해주고
최대인 경우 - 큰변과 짧은변을 합쳐준다.
그리고 for문을 이용해 미리 선언해둔 side 변수에
min 부터 max까지의 숫자를 더해주고 리턴해준다.
써놓고 보니까 그냥 max-min 을 해줘도 됐을것 같다.