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

개발잘하기프로젝트·2020년 12월 7일
0
post-thumbnail

🤔 문제

프로그래머스 - x만큼 간격이 있는 n개의 숫자

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

❗️ 제한

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

💡 접근

정수 x가 양수이면 값이 증가하는 형태를 보이고, 음수이면 감소하는 형태, 0이면 0을 유지하는 형태의 배열을 리턴한다. 예를 들어, n이 3일 때 x가 -1이면 음수이고, x는 -1부터 시작해 -1씩 증가하므로 -1, -2, -3과 같이 감소하는 형태를 보인다.

solution 1next값을 선언해주고 초기값으로 x를 할당했다. for문을 순회하면서 answer배열에 next값을 push해주고 next += x를 통해 값을 증가시킨다.

solution 2Array.from()을 이용하여 배열을 만들었다. 첫 번째 인수로 유사배열객체(arrayLike) 혹은 반복 가능한 객체, 두 번째 인수로 배열의 모든 요소에 대해 호출할 맵핑 함수, 세 번째 인수로는 맵핑 함수를 실행할 때 this로 사용할 값을 넣어준다. answern의 길이를 가지므로 { length: n }으로 길이가 n인 유사배열 객체를 넣어주고, 배열의 모든 요소에 대해서 x + (i * x)값을 맵핑한다.

아래의 test1, test2는 같은 결과를 보여준다.

const x = 1;
const n = 5;
const test1 = Array.from({ length: n }, (_, i) => x + i * x);
const test2 = Array.from({ length: n }).map((_, i) => x + x * i);

console.log('test1:', test1); // test1: [ 1, 2, 3, 4, 5 ]
console.log('test2:', test2); // test2: [ 1, 2, 3, 4, 5 ]

🧑🏻‍💻 코드

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

// solution 2
function solution(x, n) {
  const answer = Array.from({ length: n }, (_, i) => x + i * x);
  console.log(answer);
  return answer;
}

solution(2, 5); // [2, 4, 6, 8, 10]
solution(-2, 5); // [ -2, -4, -6, -8, -10 ]

📝 참고

MDN - Array.from()

profile
🏠 ☕️ 🎞 🌿 + 🧑🏻‍💻

0개의 댓글