본문 바로가기
Algorithm/JavaScript

[basics] 삼각형 판별하기

by _sweep 2021. 12. 5.

자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다.

 

 

 

 

📋 문제

길이가 서로 다른 세 개의 막대 길이를 입력받아 이 세 개의 막대로 삼각형을 만들 수 있으면 "YES", 아니면 "NO"를 출력한다.

 

 

👉 입력

첫번째 줄에 100 이하의 서로 다른 세 개의 자연수가 주어진다.

 

 

👈 출력

"YES" 혹은 "NO"를 출력한다.

 

 

💡 사용된 개념

제일 긴 선의 길이가 다른 두 선의 합보다 작으면 삼각형을 만들 수 있다.

 

 

📝 풀이

 

<script>
    function solution(a, b, c) {
        let answer;
        let sum = 0;
        let max = Number.MIN_SAFE_INTEGER;

        for (const num of [a, b, c]) {
            max = max < num ? num : max;
            sum += num
        }

        if (sum - max > max) answer = "YES"
        else answer = "NO"

        return answer;
    }

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

 

삼각형을 만들 수 있는지를 판별하기 위해서는 가장 긴 막대의 길이와 세 막대 길이의 총합이 필요하다.

for of문 안에서 세 개의 수를 순회하며 가장 큰 수를 max에 저장하고 총합을 sum에 저장한다.

if문에서 만약 나머지 두 막대 길이의 합(= sum에서 max를 뺀 값)이 가장 긴 막대의 길이보다 크다면 세 막대를 가지고 삼각형을 만들 수 있고 그렇지 않을 경우에는 삼각형을 만들 수 없다.

 

위 예제에서 세 막대의 길이로 13, 33, 17이 주어졌을 때 가장 큰 수인 33보다 나머지 두 막대 길이의 합(30)이 작기 때문에 NO가 출력된다.

 

 

 

'Algorithm > JavaScript' 카테고리의 다른 글

[basics] 홀수 합과 최솟값  (0) 2021.12.05
[basics] 최솟값 구하기  (0) 2021.12.05
[basics] 1부터 N까지의 합  (0) 2021.12.05
[basics] 연필 개수  (0) 2021.12.05
[basics] 3개의 숫자 중 최솟값 구하기  (0) 2021.12.05

댓글