알고리즘

JS) 삼각형의 완성조건 (1)

playhong 2025. 2. 7. 17:11

🔗 링크

https://school.programmers.co.kr/learn/courses/30/lessons/120889#

📄 문제

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

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

🔎 어떻게 풀까

1. 제일 큰 수를 변수에 담고
2. 그 변수를 제외한 배열을 만듦
3. 만든 배열의 [0]번째 원소와 [1]번째 원소를 더한 후
4. 변수와 비교하는 조건문을 작성

(수정)
1.  sides를 내림(오름차순)으로 정렬
2. 정렬한 배열의 [1]번째 원소와  [2]번째 원소를 더해 [0]번째 원소와 비교하는 조건문을 작성

💡 뭘 써야 할까

Math.max.apply(null,sides)
filter

(수정)
sort

💥답 (오답)

function solution(sides) {
    const longest = Math.max.apply(null,sides)
    const filterSides = sides.filter((num)=> num !== longest)
    if(sides[0] === sides[1] && sides[1] === sides[2]){
        return 0
    }else if(filterSides[0]+filterSides[1] > longest){
        return 1
    }else{
        return 2
    }
}

 

만약 sides가 [2,4,4] 인 경우 filterSides가 [2] 로 필터링되어 정상적으로 계산되지 않음

🚀 답

function solution(sides) {
    const sortSides = sides.sort((a,b)=>b-a)
    if(sortSides[0] === sortSides[1] && sortSides[1] === sortSides[2]){
        return 1
    }if(sortSides[0] < sortSides[1] + sortSides[2]){
        return 1
    }else{
        return 2
    }
}

 

sort를 사용해 내림차순으로 sides를 정렬한 후, index를 이용해 조건문 작성

'알고리즘' 카테고리의 다른 글

JS) 배열 회전시키기  (0) 2025.02.20
JS) 짝수는 싫어요  (0) 2025.01.08
JS) 최빈값 구하기  (0) 2025.01.07
JS) 가장 가까운 같은 글자  (0) 2024.10.11
JS) 두 개 뽑아서 더하기  (0) 2024.10.08