선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
처음으로 먼저 배열의 가장 큰 수를 구하려고 하였고 그 구해진 가장 큰 수를 이용하여 sides의 요소중 처음에 구한 가장큰 수를 제외한 나머지 배열을 반환하게 하였고 반환된 배열을 더하고 그 더한 결과값을 이용하여 if문을 적용하는 방식으로 접근하였다.
function solution(sides) {
let maxSide = Math.max(...sides)
let filterMax = sides.filter(maxLength => maxLength !== maxSide)
let withoutMaxSide = filterMax[0] + filterMax[1]
if(maxSide < withoutMaxSide){
return 1
}else{
return 2
}
}
하지만 위 코드의 문제점이 삼각형의 모든변의 길이가 같을경우 filterMax가 null값이 되어버린다는 문제점이 생겼다. 배열을 오름차순으로 정리하는 방향으로 수정하였다.
function solution(sides) {
sides.sort((a, b) => a - b);
if (sides[2] < sides[0] + sides[1]) {
return 1;
} else {
return 2;
}
}