x만큼 간격이 있는 n개의 숫자

Daisy🌼·2022년 5월 9일
0

문제 링크

나의 풀이

function solution(x, n) {
    let arr = [];
    
    for(let i = 1; i <= n; i++){
        arr.push(x * i)
    }
    
    return arr;
}
  • 정석적으로 반복문 for를 이용했습니다.

  • x는 반복해서 증가하는 숫자, n은 반복 횟수로 설정해주었습니다.

  • 처음에는 x가 음수인 경우를 따로 처리해주어야 한다고 생각했는데, x가 양수이든 음수이든 횟수인 i는 양수이므로 곱해주기만 하면 된다는 것을 알았습니다. (특히 저는 종종 간단한 문제도 어렵게 접근하는 경우가 있습니다. 쉬운 논리로 설명하는 습관을 길러야할 것 같습니다.😇)

다른 풀이

function solution(x, n) {
    return Array(n).fill(x).map((v, i) => (i + 1) * v)
}
  • 문제를 풀면서도 '딱 한 줄로 내놓은 풀이가 있을 것 같은데...'라고 생각했는데, 이 풀이가 그렇습니다.

  • 우선 Array().fill() 조합으로 배열을 초기화했습니다. Array()에는 배열의 길이가 들어가고 fill()에는 배열의 길이만큼 초기화할 값이 들어갑니다.

  • 다음으로 map() 메서드를 사용했습니다. map() 메서드는 각각의 배열 요소에 대해 콜백 함수를 실행하고, 각각의 결과값을 담은 새로운 배열을 반환합니다.

  • 무엇보다도, map() 메서드는 두 번째 parameter로 현재 요소의 인덱스를 받는다는 점을 활용했습니다. 또한 배열의 인덱스는 0부터 시작하기 때문에 (i + 1)을 지정해주었습니다.

정리

  • 배열을 어떻게 초기화할 것인지를 생각하자. 빈 배열이 유일한 방법은 아니다.

  • 배열 각 요소들에 대해서 연산하는 경우, map()메서드를 고려해볼 수 있다.

  • map()메서드는 현재 요소 뿐만 아니라 현재 요소의 인덱스를 두 번째 parameter로 받는다.

profile
커피와 재즈를 좋아하는 코린이 | 좋은 글 좋은 코드를 쓰고 싶습니다

0개의 댓글