Javascript - level : 0 - 다음에 올 숫자

HS K·2022년 12월 14일
0

문제설명

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


제한사항

2 < common의 길이 < 1,000
-1,000 < common의 원소 < 2,000

  • common의 원소는 모두 정수입니다.

등차수열 혹은 등비수열이 아닌 경우는 없습니다.
등비수열인 경우 공비는 0이 아닌 정수입니다.


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];
    }
}

여러종류의 풀이 보기

let solution = q => {
    let [a, b, c] = q;
    return a + c == 2 * b ? q.pop() + b - a : q.pop() * b / a
}

후기

  1. 나는 제한사항을 반드시 함수의 조건으로 포함시켜야한다는 생각에 굉장히 복잡하게 알고리즘을 생각했으나, 다른사람들의 풀이를 보니 제한사항을 쓰지 않아 당혹스러웠다.
      예를들어 common원소가 음수일 경우 절대값의 크기가 1000보다 작아야하느니 이런 생각까지 했었다. (최소값은 -1000보다 크기가 커야한다고 나와있기에) 알고리즘의 튜토리얼에 대해서 좀 더 살펴보고 문제를 풀어야겠다.
  1. 문제에서 등차수열 혹은 등비수열이라고 하였는데, common이 등비수열일때의 경우와 등차수열일때의 경우 총 2가지로 나누어 함수를 작성해야한다는 사실에 처음에 당혹스러웠다. 하지만 조금만 생각해본다면, 의외로 간단한 문제였다는 사실에 문제의 핵심이 무엇일지 차분하게 생각하는 훈련이 필요하다고 느꼈다.
profile
주의사항 : 최대한 정확하게 작성하려고 하지만, 틀릴내용이 있을 수도 있으니 유의!

0개의 댓글