ALGORITHM/PROGRAMMERS

[프로그래머스] x만큼 간격이 있는 n개의 숫자 | javascript

heeney 2021. 7. 25. 14:36
728x90

[프로그래머스] x만큼 간격이 있는 n개의 숫자 | javascript level 1

문제 설명

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

제한 조건

  • x는 -10000000 이상, 10000000 이하인 정수입니다.
  • n은 1000 이하인 자연수입니다.

입출력 예

x n return
2 5 [2,4,6,8,10]
4 3 [4,8,12]
-4 2 [-4, -8]

작성한 코드

function solution(x, n) {
    let answer = [];
    for(let i=0, init=x; i<n; i++) {
        answer.push(init);
        init += x;
    }
    return answer;
}

복잡하게 생각하고 푸는 것 같습니다.. 정답 직전까지 생각이 도달했다가 인내심 못가지고 더 꼬아서 생각하게 되는데 알고리즘 문제는 다다익선, 많이 풀수록 더 좋아지는거니까 좋아지겠죠 화이팅 🤯

저는 init라고 x의 초기값을 먼저 변수에 저장해두고 계속 x를 더해주면서 answer에 push해주는 방법으로 풀었습니다.

 

좋은 코드

function solution(x, n) {
    return Array(n).fill(x).map((v, i) => (i + 1) * v)
}
function solution(x, n) {
    var answer = [];
    for (let i = 1; i <= n; i++) {
        answer.push(x*i)
    }
    return answer;
}

첫번째 코드는 정말 간결해요!! 정답 도출 과정은 유사합니다.
두번째 코드 보고 나 정말 정답 직전까지 갔다가 꼬아서 푸는구나 했던.... 생각한거 그대로라서 저 답안 보고 좀 벙쪘는데 이정도면.... 문제 푸는걸 좀 정리하면서 해결해야 하겠습니다 😂

forEach, map, filter, reduce가 너어무 헷갈려서 주기적으로 복습하는데 진짜 이 함수들은 무궁무진하네요. 아직 헷갈리고 어렵다는 뜻입니다 ㅋㅋㅋㅋㅋㅋ ㅠㅠ

728x90