알고리즘_ x만큼 간격이 있는 n개의 숫자

정재연·2022년 1월 20일
0

알고리즘

목록 보기
19/23

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

1. 문제 설명

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

2. 제한 조건

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

3. 입출력 예

xnanswer
25[2,4,6,8,10]
43[4,8,12]
-42[-4, -8]

4.나의 문제 풀이

1. x씩 증가하는 숫자를 n개 지니는 배열을 리턴
function solution(x, n) {
  var answer = [];
  for (let i = 1; i <= n; i++){
    answer.push(x*i)
  }
  return answer;
}
  1. for문을 이용해 x부터 시작한 숫자를 담아야 하기 때문에 1부터 시작해서, n까지 반복하게 설정하였다.
  2. x만큼 증가한 숫자를 담아야 했기 때문에 x*i의 결과 값을 push()를 이용해 배열에 추가해 주었다.

5. 다른 사람의 문제 풀이

function solution(x, n) {
    return Array(n).fill(x).map((v, i) => (i + 1) * v)
}

Array(),fill()를 사용하여 문제를 풀었다.

  • Array()
    Array() 새로운 array 객체를 생성할때 사용하는 생성자이다.
    // Array(숫자)
    let arr = new Array(2)
    console.log(arr)		// [ <2 empty items> ]
    arr[1]='1'
    console.log(arr)		// [ <1 empty items> ,'1']

    // Array(...'문자')
    new Array('good','luck')	// [ 'good', 'luck' ]
  • fill()
    fill() 메서드는 배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로 채운다.
fill('채울값',star,end)[1,2,3,4,5].fill('ㅎ',2,4)	// [ 1, 2, 'ㅎ', 'ㅎ', 5][1,2,3,4,5].fill('ㅎ',2)		// [ 1, 2, 'ㅎ', 'ㅎ', 'ㅎ', 'ㅎ' ][1,2,3,4,5].fill('ㅎ')		// [ 'ㅎ', 'ㅎ', 'ㅎ', 'ㅎ', 'ㅎ', 'ㅎ' ]

➀ fill함수에 채울값과 star,end 모두 입력하면,index2부터 index4 까지 로 채워진다.
➁ end를 제외하고 입력하면 입력된 star부터 끝까지 로 채워진다.
➂ 채울값만 입력하면 그 값으로 배열 끝까지 로 채워진다.


위 배운 내용을 참고 하면

function solution(x, n) {
    return ➀Array(n).➁fill(x).➂map((v, i) => (i + 1) * v)
}

➀ Array(n)는 n 만큼 빈슬롯을 가진 상태.
➁ fill(x)로 Array(n)을 전부 x로 채웠다.
➂ map()을 이용하여 x씩 증가하는 숫자로 변경해 주었다.

profile
코린이 개발자 :)

0개의 댓글