문제(출처: 프로그래머스)
분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다. 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다. 삼각형의 두 변의 길이가 담긴 배열 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가 될 수 있는 조건은 다음과 같다
- c + a > b
- c + b > a
- 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 이다.
'프로그래밍 > 코딩연습' 카테고리의 다른 글
[ JS 코딩연습 ] 저주의 숫자 3 (0) | 2024.05.21 |
---|---|
[ JS 코딩연습 ] 안전지대 (1) | 2024.05.20 |
[ JS 코딩연습 ] 외계어 사전 (0) | 2024.05.19 |
[ JS 코딩연습 ] 숨어있는 숫자의 덧셈 (0) | 2024.05.18 |
[ JS 코딩연습 ] 다항식 더하기 (1) | 2024.05.17 |