프로그래머스 - 다음에 올 숫자

Lellow_Mellow·2023년 1월 4일
1
post-thumbnail

⭐ Lv. 0 - 다음에 올 숫자

✅ 문제 설명

등차수열 혹은 등비수열 common이 매개변수로 주어질 때, 마지막 원소 다음으로 올 숫자를 return 하도록 solution 함수를 완성해보세요.

✅ 제한사항

  • 2 < common의 길이 < 1,000
  • -1,000 < common의 원소 < 2,000
  • 등차수열 혹은 등비수열이 아닌 경우는 없습니다.
  • 공비가 0인 경우는 없습니다.

✅ 입출력 예

commonresult
[1, 2, 3, 4]5
[2, 4, 8]16

✅ 풀이 코드 + 설명

입력으로 주어지는 common의 길이가 최소한 3 이상이기 때문에 가장 앞 3개 원소를 기준으로 등비수열인지 등차수열인지 판단하자.

등비수열등차수열은 아래와 같이 구분하여 판단한다.

등비수열

  • a[2] / a[1] === a[1] / a[0]

등차수열

  • a[2] - a[1] === a[1] - a[0]

이를 이용하여 작성한 코드는 아래와 같다.

function solution(common) {
    let answer = 0;
    
    const isArithmetic = common[1] - common[0] === common[2] - common[1];
    
    if(isArithmetic) answer = common[common.length - 1] + common[1] - common[0];
    else answer = common[common.length - 1] * (common[1] / common[0]);
    
    return answer;
}

🧐 해당 코드로도 통과는 했지만 더 간단하게 표현은 불가능할까?

다른 풀이를 참고하여 코드를 간략하게 변환하면 아래와 같이 해결이 가능하다.

const solution = c => c[2] - c[1] === c[1] - c[0] ? c.pop() + c[1] - c[0] : c.pop() * (c[1] / c[0]);

profile
잔잔한 물결에서 파도로, 도약을 위한 도전. 함께하는 성장

0개의 댓글