삼각형의 완성조건

HYUK·2023년 6월 17일
0

알고리즘

목록 보기
2/2

1. 문제

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.

2. 풀이과정

처음으로 먼저 배열의 가장 큰 수를 구하려고 하였고 그 구해진 가장 큰 수를 이용하여 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;
  }
}
profile
step by step

0개의 댓글