문제(출처: 프로그래머스)

분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다. 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다. 삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return 도록 solution 함수를 완성해주세요.

 

▶ 내가 푼 방식 -- 해결하지 못함

function solution(sides) {
    const maxValue = Math.max(...sides)
    const minValue = Math.min(...sides)
    
    return (maxValue + minValue) - (maxValue - minValue)-1
}

 

 다른 유저가 푼 방식

// 유저 1
function solution(sides) {
    return Math.min(...sides)*2-1
}

 

 배운 것들

     -  문제 해설

주어진 sides 배열에서 두 원소를  a 와 b 라고 할 때, 삼각형의 세 번째 변 c가 될 수 있는 조건은 다음과 같다

  1. c + a > b
  2. c + b > a
  3. a + b > c

세 번째 조건에서 c 는 a + b - 1 보다 작아야 한다.(삼각형 불등식이 등호를 포함하지 않기 때문에 -1을 한다.)

첫 번째와 두 번째 조건에서 c 는 각각 b - a + 1 과  a - b + 1보다 커야 한다.

이 두 값 중 더 큰 값을 c 의 최소값으로 선택한다.

c 가 될 수 있는 최소값은 |a - b| +1 이고 최대값은 (a+b) + 1 이다.

c 가 될 수 있는 값의 개수는 (a+b) + 1 - ( |a-b| +1) + 1 이다.

간단화 하면 ( a + b ) - (|a -b|) -1 이다. 

+ Recent posts