프로그래머스 JS LV0

LV0 76 삼각형의 완성조건(2)

와라리요 2022. 11. 11. 12:59

문제 설명

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

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

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

 

제한 사항

  • sides의 원소는 자연수입니다.
  • sides의 길이는 2입니다.
  • 1 ≤ sides의 원소 ≤ 1,000

 

입출력 예

sides result
[1, 2] 1
[3, 6] 5
[11, 7] 13

 

나만의 풀이

  이 문제는 처음에는 for문을 이용하여 문제를 풀었다. 먼저 이 문제는 큰 수에 포커스를 맞추어 문제를 진행해야 하는데 sides 매개변수 배열 중 큰 숫자의 index가 어딘지 모르느 sort()를 이용해 내림차순으로 정렬하고 가시적으로 보기 좋게 const를 이용해 배열의 큰 수, 작은 수를 선언했다.

  그 후 for문와 삼항연산자를 이용해 해당 조건이 되면 count라는 변수에 ++하는 형태로 풀었다~~

function solution(sides) {
    const numArr = sides.sort((a, b) => a - b)
    const Arr0 = numArr[0]
    const Arr1 = numArr[1]
    let count = 0;
    
    for (let i = 1; i <= Arr1; i++) {
        Arr1 < Arr0 + i ? count++ : null;
    }
    for (let i = 1; i < Arr0 + Arr1; i++) {
        Arr1 < i ? count++ : null;
    }

    return count
}

  그런데 문제를 보면 볼 수록 count 값을 구하는데 규칙이 있는 것으로 보여 보는 중

(Arr1 - (Arr1 - Arr0)) + (Arr1 + Arr0 - Arr1 - 1)의 식을 만들면 출력하고자 하는 값이 나온다는 규칙을 찾아서 코드를 새롭게 구성해 보았다.

function solution(sides) {
    const numArr = sides.sort((a, b) => a - b)
    const Arr0 = numArr[0]
    const Arr1 = numArr[1]

    return (Arr1 - (Arr1 - Arr0)) + (Arr1 + Arr0 - Arr1 - 1)
}

'프로그래머스 JS LV0' 카테고리의 다른 글

LV0 78 등수 매기기  (0) 2022.11.14
LV0 77 로그인 성공?  (0) 2022.11.11
LV0 75 컨트롤 제트  (0) 2022.11.10
LV0 74 직사각형 넓이 구하기  (0) 2022.11.10
LV0 73 유한소수 판별하기  (0) 2022.11.09