🔗 링크
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 |