[알고리즘] 삼각형 판별하기

hoonie·2021년 7월 26일
0

알고리즘

목록 보기
5/15
post-thumbnail

문제

길이가 서로 다른 A, B, C 세 개의 막대 길이가 주어지면 이 세 막대로 삼각형을 만들 수 있 으면 “YES"를 출력하고, 만들 수 없으면 ”NO"를 출력한다.

▣ 입력설명
첫 번째 줄에 100이하의 서로 다른 A, B, C 막대의 길이가 주어진다.

▣ 출력설명
첫 번째 줄에 “YES", "NO"를 출력한다.

입력 - 6 7 11
출력 - YES

코드 보기

function solution(a, b, c) {
       let answer = "NO";
       let array = [a, b, c];
       let sum = array.reduce((a, b) => {
         return a + b;
       });

       let max_num = array[0];
       for (let i = 0; i < array.length; i++) {
         if (max_num < array[i + 1]) {
           max_num = array[i + 1];
         }
       }

       if (sum - max_num > max_num) {
         answer = "YES";
         return answer;
       }
       return answer;
     }

	//YES
     console.log(solution(6, 7, 11));

설명 -

우선 삼각형이 만들어지기 위한 조건은 가장 큰 길이의 막대보다 나머지 두 막대의 길이가 더 커야한다.

때문에 reduce 메서드를 이용하여 받아온 매개변수를 다 더한 sum 을 만들고,
그 중에서 최대값을 구하였다.

sum과 최대값을 빼면 최대값을 제외한 두 숫자의 합이 나올 것이며, 두 숫자의 합이 최대값보다 크면 YES, 아니면 NO를 출력했다.

0개의 댓글