Javascript-level : 코딩테스트 입문 - 삼각형의 완성조건 (1)

HS K·2022년 12월 25일
0
post-custom-banner

문제설명

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

제한사항

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

내가 쓴 답

1번

const value = (sides[0]<sides[1]+sides[2]) ? 1 : 2 
: (sides[0]+sides[2]<sides[1]) ? 1:2
: (sides[0]+sides[1]<sides[2]) ? 1:2

2번

function solution(sides) {
   if(sides[1]+sides[2]>sides[0]) {
       return 1
   }
    if (sides[0]+sides[2]>sides[1]) {
        return 1        
    }
     if (sides[0]+sides[1]>sides[2]) {
        return 1
    }
    else return 2
}

3번

function solution(sides) {
   if(sides[1]+sides[2]>sides[0]) 
       return 1

    if (sides[0]+sides[2]>sides[1]) 
        return 1        
    
     if (sides[0]+sides[1]>sides[2]) 
        return 1
     return 2
}

※ 참고로 틀린 답이다. 어디가 틀렸을까?

수정한 답

let solution=([a,b,c])=>a<b+c&&b<a+c&&c<a+b?1:2

여러종류의 풀이 보기

1번

function solution(sides) {
    sides = sides.sort((a,b) => a-b)
    return sides[0]+sides[1] > sides[2] ? 1 : 2;
}

2번

function solution(sides) {
    let max = sides.reduce((acc, n) => acc > n ? acc : n, 0)
    let sum = sides.reduce((acc, n) => acc + n, 0) - max

    return max < sum ? 1 : 2;
}

후기

새로운 매서드를 익히고 싶다면 먼저 익히고 싶은 매서드부터 시도해보고, 잘 안되면 할 줄 아는 매서드로 풀고 난 뒤에 다른사람의 풀이를 보며 어느 부분에서 막혔는지 피드백 해야겠다.

profile
주의사항 : 최대한 정확하게 작성하려고 하지만, 틀릴내용이 있을 수도 있으니 유의!
post-custom-banner

0개의 댓글