Recent Posts
Recent Comments
Link
Today
Total
01-27 18:06
관리 메뉴

채린씨의 티스토리

[Programmers] Level1 - x만큼 간격이 있는 n개의 숫자(JavaScript) 본문

코딩테스트 대비

[Programmers] Level1 - x만큼 간격이 있는 n개의 숫자(JavaScript)

채린씨 2022. 3. 22. 11:21

문제 설명

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


제한 조건

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

 


입출력 예

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

 


나의 풀이

for문을 사용해서 간단히 풀 수 있다. 매번 x씩 증가하므로 이를 변수 add_gap에 저장해두고, x를 add_gap만큼 증가시키며 배열에 넣으면 된다!
function solution(x, n) {
  var answer = [];

  let add_gap = x;

  // n번 반복
  for (let i = 0; i < n; i++) {
    answer.push(x); // 처음 배열에 넣을 x
    x += add_gap; // x를 배열에 넣은 후 x값을 add_gap만큼 증가
  }

  return answer;
}

 


좋았던 다른 사람의 풀이 1

사실 문제를 읽고 바로 와다다 코드를 작성하는 대신, 1초만 더 생각했다면 x의 배수들로 구성된 배열이라는 것을 알 수 있었을 것이다.. 그랬다면 add_gap 같은 변수는 필요가 없었을 것.. 항상 내가 지금 뭘 구현하고 싶은지 그 궁극적인 목적을 생각하자..!!

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

 


좋았던 다른 사람의 풀이 2

n 크기의 배열을 만들고, x로 이 배열을 채운 뒤, 배열의 각 요소에 콜백 함수를 실행하는 .map을 이용하였다! 코딩테스트 문제를 짧게 풀어낸다고 다 좋은 것은 아니지만, 새로운 접근이고 신기하다! 그리고 이런 방식으로 해결했을 때 훨씬 효율적인 문제도 있을 것..!! https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/map

 

Array.prototype.map() - JavaScript | MDN

map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.

developer.mozilla.org

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

 

Comments