JS 알고리즘 문제풀이/섹션 1. 기본문제 풀이

2.삼각형 판별하기

crab. 2022. 1. 11. 15:40

📌강의정리

세수중 최소값쓰기를 복습해보는 문제이다.

삼각형 되려면 가장 긴막대를 제외한 두막대의 합이 긴막대보다 최소 커야지

삼각형이 성림된다.

우선 앞에서의 세수중 최소값을 응용한다. 그러면 최대값이 max에 저장된다.

위에 sum이라는 변수를 만들어 미리 세 변수를 합한 값을 넣는다.

그래서 sum에서 max를 빼면 나머지 짧은 막대 둘의 값의 합이다.

이제 sum-max를 max랑 비교해서 짧거나 같으면 answer를 no로 바꿔주기만 한다.

 

📌느낀점

세수중 최소값을 응용한건 잘했지만 짧은 두막대의 합을 구할때 sum이라는 변수를 따로 만들어

sum에서 max를 뺄 생각을 하지 못했다... 이렇게 하면 굳이 제일 큰 값에서 다른 두 막대의 합을 각각의 경우에서 구할 필요가 없을뿐더러 나의 코드보다 2줄을 더 줄이고 간결해진다.

항상 번뜩이는 아이디어로 코드를 간결하게 할 수 있는 방법을 조금 더 생각해보자.

// 나의코드
<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(a, b, c){
                let answer="YES", max;
                if(a>=b) max = a;
                else max = b;
                if(max<=c) max = c;
                if(max == a && b+c<=a) answer = "NO"
                else if(max == b && a+c<=b) answer = "NO"
                else if(max == c && a+b<=c)  answer = "NO"

                return answer;
            }

            console.log(solution(6, 7, 11));
        </script>
    </body>
</html>
// 강사님 코드
<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            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;
                if(tot-max<=max) answer="NO"; 
                return answer;
            }

            console.log(solution(13, 33, 17));
        </script>
    </body>
</html>

'JS 알고리즘 문제풀이 > 섹션 1. 기본문제 풀이' 카테고리의 다른 글

[보충] 내장함수로 최솟값, 최댓값 구하기  (0) 2022.01.11
5.최솟값 구하기  (0) 2022.01.11
4.1부터 N까지 합  (0) 2022.01.11
3.연필 개수  (0) 2022.01.11
1.세 수 중 최솟값  (0) 2022.01.11