개발일기

[JavaScript]삼각형의 완성조건 (2) 본문

Algorithm

[JavaScript]삼각형의 완성조건 (2)

황대성 2024. 7. 19. 23:24
문제 설명

 

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

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

삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.

 

제한사항

 

  • sides의 원소는 자연수입니다.
  • sides의 길이는 2입니다.
  • 1 ≤ sides의 원소 ≤ 1,000

 

입출력 예

 

sides result
[1, 2] 1
[3, 6] 5
[11, 7] 13

 

풀이 
function solution(sides) {
    var answer = 0;
    // (11 - 7) ~ 11  or  (11 + 1) ~ (11 + 7 - 1)
    const min = Math.min(...sides)
    const max = Math.max(...sides)
    for(let i = max - min + 1; i <= max; i++){
            answer += 1
        }
    for(let i = max +1; i<= max + min - 1; i++){
            answer += 1
        }
    return answer;
}

 

풀이 설명

 

수학문제는 역시 너무 어렵다. 수학적인 부분도 생각해야 되고, 코드도 생각해야 되고 머리가 복잡 했다. 입출력 예시를 보고 코드의 주석과 같이 하나의 공통된 공식?을 만들어서 코드로 구현 했다.(입출력 예 #3) 풀어 보자.

 

1. sides 배열에서 큰 변과 작은 변을 Math.max()와 Math.min()을 사용하여 구한다.

2. for문을 사용하여 (max - min + 1) ~ max 사이의 값을 반복하면서 answer에 1을 더한다.(가장 긴 변이 max인 경우)

3. for문을 사용하여 (max + 1) ~ (max + min - 1) 사이의 값을 반복하면서 answer에 1을 더한다.(나머지 한 변이 가장 긴 변인 경우)

4. 될 수 있는 변의 개수를 담은 answer을 리턴한다.