<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));