728x90
문제
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
해결 과정
function solution(sides) {
let organizeArray = sides.sort();
for (let i = 0; i < organizeArray.length; i++) {
if (organizeArray[0] + organizeArray[1] < organizeArray[2]) {
return 2;
} else if (organizeArray[0] + organizeArray[1] > organizeArray[2]) {
return 1;
}
return 2;
}
}
오름차순이라는 힌트를 알기전까지 문제가 안풀려 좌절하고 있었다.
구글링을 하기전 질문하기를 통해 오름차순의 힌트를 얻을 수 있었다.
하하하하 🫨
리펙토링
function solution(sides) {
sides = sides.sort((a,b) => a-b)
return sides[0]+sides[1] > sides[2] ? 1 : 2;
}
삼항조건 연산자로 보다 심플하게 문제를 해결할 수 있었다.
🤔 문득 내가 작성한 sort()정렬과 리펙토링에서 사용한 sort()정렬의 차이점이 궁금해졌다.
내가 작성한 코드의 방법은 배열 요소들이 문자로 간주되어 예기치 않은 정렬이 될 수 있는 문제점이 생긴다.
반면 리펙토링에서 사용한 sort()는 숫자 크기에 따라 정확히 오름차순으로 정렬된다.
즉! sort() 함수를 사용할 때는 sort((a-b) => a-b)로 사용해야한다!
728x90
'⌨️ 프로그래머스 > 코딩테스트 입문' 카테고리의 다른 글
[프로그래머스] 369게임 | JS (0) | 2024.08.15 |
---|---|
[프로그래머스] 가까운 수 | JS (4) | 2024.08.15 |
[프로그래머스] 중복된 문자 제거 | JS (0) | 2024.08.13 |
[프로그래머스] 컨트롤 제트 🎛️ | JS (0) | 2024.08.07 |
[프로그래머스] 숨어있는 숫자의 덧셈(1) | JS (0) | 2024.07.22 |