[프로그래머스] - lv.0 - 다음에 올 숫자

엘크·2023년 9월 22일
0

programers

목록 보기
9/9
post-custom-banner

문제 설명


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

제한 사항


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

입출력 예


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

입출력 예 설명


내가 푼 답


function solution(common) {
  // 등차수열 판단
  if (common[1] - common[0] === common[2] - common[1]) {
    // 등차수열인 경우 다음 숫자는 마지막 숫자 + 등차값
    return common[common.length - 1] + (common[1] - common[0]);
  } else {
    // 등비수열인 경우 다음 숫자는 마지막 숫자 * (공비값)
    return common[common.length - 1] * (common[1] / common[0]);
  }
}

Code Flow


생각하기

  • 등비수열이거나 등차수열인 경우라면, 해당 값이 얼마나 더해지고 곱해지느냐를 구하는게 관건이다
    1. 일단 index[1] - index[0] 했을때 나오는 값을 구해보고
    2. 그리고 index[2] - index[1] 했을때 나오는 값이 동일하면 등차수열, 동일하지 않다면 등비수열이다.
    3. 등차수열의 경우 마지막 index값에서 등차값을 더해주면 되고
    4. 등비수열의 경우 마지막 index값에서 등비값을 곱해주면 된다.

다른 해답은 없을까?



function solution(common) {
    if ((common[1]-common[0])==(common[2]-common[1])){
        return common.pop() + common[1] - common[0];
    }
    else{
        return common.pop()*common[1]/common[0];
    }
}
  • POP()을 쓴다는게 신기해서 가져와 봤다.
profile
꾸준하게 하면 된다 언젠가는..?
post-custom-banner

0개의 댓글