자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다.
📋 문제
길이가 서로 다른 세 개의 막대 길이를 입력받아 이 세 개의 막대로 삼각형을 만들 수 있으면 "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 |
댓글