본문 바로가기

Coding Test/Programmers

[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 75 - 삼각형의 완성조건 (2))

728x90
# 문제

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

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



# 답안

// 1. 입력: 삼각형의 두 변의 길이가 담긴 배열 -> [1,2] 같은거
// 2. 출력: 나머지 한변이 될 수 있는 정수의 개수

function solution(sides) {
    let a = Math.min(...sides)
    let b = Math.max(...sides)
    let answer = 0
    for(let i = 1 ; i < a+b ; i++){
        let arr = [a,b,i].sort((a,b) => a-b)
        if(arr[0] + arr[1] > arr[2]){
            answer++
        }
    }
    return answer;
}

 

주어진 배열 sides = [11, 7]을 기준으로 코드가 어떻게 동작하는지 단계별로 설명하겠습니다.

  1. 먼저, Math.min(...sides)와 Math.max(...sides)를 사용하여 배열 sides의 최솟값과 최댓값을 찾습니다.
    • Math.min(...sides)는 배열 sides의 요소 중 가장 작은 값을 반환합니다. 여기서는 7이 최솟값입니다.
    • Math.max(...sides)는 배열 sides의 요소 중 가장 큰 값을 반환합니다. 여기서는 11이 최댓값입니다.
    따라서 a = 7이고, b = 11입니다.

  2. 다음으로, for 반복문을 시작합니다. i의 초기값은 1이고, a+b보다 작을 때까지 반복합니다. 여기서 a+b는 가장 짧은 변과 가장 긴 변의 합입니다.
    • a + b = 7 + 11 = 18이므로 반복문은 i가 1부터 17까지 총 17번 반복됩니다.

  3. 각 반복에서는 변의 길이가 [a, b, i]인 배열을 생성하고, 정렬합니다.
    • 예를 들어, i가 1인 경우 배열은 [7, 11, 1]이 되며, 정렬 후 [1, 7, 11]이 됩니다.

  4. 변의 길이가 정렬된 배열에서 각 변의 길이가 삼각형의 조건을 만족하는지 확인합니다.
    • 여기서는 arr[0] + arr[1] > arr[2]를 사용하여 삼각부등식을 확인합니다.
    • [1, 7, 11]에서는 1 + 7이 11보다 작으므로 삼각형의 조건을 만족합니다. 따라서 answer가 증가합니다.

  5. 반복문이 종료된 후, answer 값이 반환됩니다. 여기서는 삼각형을 만들 수 있는 경우의 수인 17이 반환됩니다.

따라서 sides = [11, 7]인 경우, 가능한 삼각형의 개수는 17개입니다.

728x90