Javascript - 삼각형의 완성조건 (2)

이율곡·2023년 7월 4일

Programmers

목록 보기
22/44
post-thumbnail

삼각형의 완성조건 (2)

문제

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.

입출력 예

sidesresult
[1, 2]1
[3, 6]5
[11, 7]13

접근방법

이 문제의 핵심은 삼각형의 성질과 조건을 이해하는 것이 핵심이다. 문제에도 나와 있듯이 삼각형은 어떤 두 변의 길이의 합이 세 번째 변의 길이보다 커야 한다. 이를 바탕으로 적용하면,

  1. sides 배열을 분해하여 두 변의 길이를 얻기.
  2. 삼각형의 성질에 따라 나머지 변의 길이가 될 수 있는 최소값과 최대값을 계산. 즉, 나머지 변의 길이는 두 변의 차보다 커야하며, 두 변의 합보다 작아함.
  3. 위의 두 조건을 만족하는 정수의 개수를 반환.

풀이

function solution(sides) {
    let [side1, side2] = sides;

    let minSide = Math.abs(side1 - side2) + 1;
    let maxSide = side1 + side2 - 1;

    return maxSide - minSide + 1;
}

풀이는 간단하다. 첫 번째로 sides를 구조분해하여 두 변의 길이를 얻는다.

다음으로 최소 길이와 최대 길이를 구한다. 최소 길이의 경우 두 변의 길이의 차보다 큰 값 중 가장 작은 값이어야 한다. +1을 붙인 이유는 두 변의 길이보다 커야 하기 때문이다. 최대 길이의 경우는 두 변의 길이의 합보다 작은 값 중 가장 큰 값이어야 한다.

마지막으로 최대 길이와 최소 길이 사이의 값의 개수를 구해주면 된다.


정리하기

이번에는 삼각형의 성질을 토대로 문제를 풀었다. 문제에서도 나와 있었기 때문에 크게 어렵지는 않았다. 그래도 늘 접근 방법에 대해 공부할 수 있어 좋은 공부가 되고 계속 코드를 생각해야 되기 때문에 만족스러웠다.

profile
음악을 좋아하는 사람이 음악을 만들 듯, 개발을 좋아하게 될 사람이 쓰는 개발이야기

0개의 댓글