코딩테스트 대비
[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)
}