[JS] 삼각형의 완성 조건 programmers sort()

0

코딩테스트

목록 보기
38/80
post-thumbnail

🎀 문제

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

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

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

function solution(sides) {
    var answer = 0;
    return answer;
}

🎀 내 답변

function solution(sides) {
    let bigNum = Math.max(...sides)
    let plusNum = sides.sort((a,b) => b-a)[1] + sides.sort((a,b) => b-a)[2]
    if(bigNum < plusNum) {
        return 1
    }else {
        return 2
    }
}

solution([199, 72, 222]);
  1. Math.max() 활용하여 sides 의 최대값을 bigNum에 저장한다.
  2. 나머지 두 수는 sort 함수를 활용해 배열 정리를 한 다음 index로 지정하고, 그 둘의 합친 값을 plusNum 변수에 저장한다.
  3. if 문으로 plusNumbigNum보다 클 경우 삼각형을 만들 수 있으니 1을 반환하고 그렇지 않을 경우 2를 반환한다.

🎀 더 나은 답변

function solution(sides) {
    sides = sides.sort((a,b) => a-b)
    return sides[0]+sides[1] > sides[2] ? 1 : 2;
}
  1. sort 함수로 오름차순으로 정렬한다.
  2. 0번째와 1번째 수의 합이 2번째보다 크다면 1을 그렇지 않다면 2를 반환한다.

굳이 변수에 저장하지 않아도 이렇게 간단하게 반환할 수 있었다니.
나도 조금만 더 신중히 생각했다면 가능했을텐데..!

profile
일단 해. 그리고 잘 되면 잘 된 거, 잘 못되면 그냥 해본 거!

0개의 댓글