🧑🏻‍💻 이지열 의 Study Note

<aside> 💡 현재 노션 워크스페이스는 공유 페이지입니다. 그렇기에 문제를 직접적으로 올리시면 안됩니다.

하지만 풀이 과정은 괜찮습니다 !

올릴 경우 저작권 문제가 있습니다

</aside>

문제 설명

서로 다른 숫자 세가지가 주어진다. 이 세가지 숫자를 막대 그러니까 삼각형 한 변의 길이라고 생각하고 삼각형을 만들 수 있으면 “YES"를, 만들 수 없으면 ”NO"를 출력!

<aside> 💡 문제를 직접적으로 올리면 안된다고 해서 말만 바꾸어보았습니다.

</aside>

입력예제 1 - 6 9 11 출력예제 1 - YES 입력예제 1 - 13 33 19 출력예제 1 - NO

내가 풀어본 방식

		// 삼각형 변 길이 조건
    // 가장 긴 변이  다른 두 변의 합보다는 작다

    function solution(a, b, c) {
      const sides = [a, b, c];

      // 오름차순으로 정렬
      sides.sort(function (a, b) {
        return a - b;
      });;

      return (sides[0] + sides[1]) > sides[2] ? "YES" : "NO";
    }

    console.log(solution(13, 33, 17));

개인적인 피드백

정답영상을 보셨으면 알 수 있다시피 세 수의 최소값 구하는 로직을 활용해서 최대값을 구해서 문제 풀이를 진행하는 것을 출제가가 의도하였는데, 그냥 sort 메소드로 간단하게 해버렸습니다. 물론 문제에 정렬 메소드 쓰지말라는 말이 없어서 그렇게 하긴 했지만 무언가 아쉬웠던 것 같습니다.

그리고 너무 기초 수학 지식이 없다보니 처음에 삼각형이 되기 위한 조건에서부터 부끄럽지만 헷갈리기도 했습니다. 피타고라스 정리(알고보니 이건 직각삼각형에 관한 것이었습니다..)를 써야하는 줄 알고 초반엔 삽질했던 점도 아쉬웠습니다.

정답 코드

function solution(a, b, c){
          let answer="YES", max;

					// 세 수를 모두 더한 값을 저장
          let tot=a+b+c;

					// 세 수의 최소값을 구하는 문제의 정답과 같은 로직으로 세 수 중 최대값을 구하여 저장
          if(a>b) max=a;
          else max=b;
          if(c>max) max=c;

					// 세가지 숫자 중에 최대값을 구해도 a, b, c 중 어느 것이 최대값인지는 알 수 없다.
					// 그래서 tot이라는 변수에 세 수를 다 합한 값을 저장하고, tot에서 최대값을 뺐다.
					// tot에서 최대값을 빼면 최대값이 아닌 나머지 두 변의 길이가 더해진 값이기 때문에
					// 아래와 같이 조건을 설정하고 나머지 두 변의 길이의 합이 최대값보다 작거나 같으면
					// 'NO', 아니면 최초에 저장했던대로 'YES'
          if(tot-max<=max) answer="NO"; 
          return answer;
}

console.log(solution(13, 33, 17));

레퍼런스

JavaScript sort() 함수 톺아보기