본문 바로가기
알고리즘 스터디/프로그래머스 스킬체크 레벨 1(끝)

[프로그래머스 스킬체크 레벨 1] x만큼 간격이 있는 n개의 숫자 문제 풀이 및 설명 - 자바스크립트[JavaScript]

by 레일라오리덕 2021. 7. 13.
728x90

https://programmers.co.kr/learn/courses/30/lessons/12954?language=javascript 

 

코딩테스트 연습 - x만큼 간격이 있는 n개의 숫자

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

programmers.co.kr

 

문제

함수 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]

 

기본 제공 틀

 

function solution(x, n) {
    var answer = [];
    return answer;
}

 

풀이 [JavaScript]

 

728x90

 

이번 문제는 간단히 정규식 for문을 사용하여 들어오는 값, x에 대해 n번째까지 돌면서 x에 n번째 값까지 곱한 값을 answer라는 배열에 푸쉬하여 리턴하는 형식으로 로직을 짜 보았습니다.

 

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

 

다른 사람의 풀이 [JavaScript]

 

아래는 다른 사람의 풀이입니다.

 

function solution(x, n) {
    return Array.from({length:n},(v,i)=>(i+1)*x);
}

이 Array.from은 나중에 유용하게 쓸 수 있을 것 같아 스터디 해보았습니다.

 

String 적용 Array.from

Array.from('cat');
//['c', 'a', 't']

 

Set 적용 Array.from

const set = new Set(['apple', 'banana', 'cat', 'banana']);
Array.from(set);
//['apple', 'banana', 'cat']

 

Map 적용 Array.from

const map = new Map([[1,2], [2,4], [4,8]]);
Array.from(map);
//[[1,2], [2,4], [4,8]]

const mapper = new Map([['1', 'a'], ['2', 'b']]);
Array.from(mapper.values());
//['a', 'b'];

Array.from(mapper.keys());
//['1', '2'];

 

Arrow function을 적용한 Array.from

Array.from([2, 4, 6], x => x + x);
//[4, 8, 12]

Array.from({length:3}, (v, i) => i);
//[0, 1, 2]

 

위의 Array.from 중 이 문제에 적용된 방식은 arrow function을 적용한 것인데요.

length는 배열의 길이를 가르키고, v는 아직 배열에서 undefined로 초기화되었기때문에 undefined 값입니다.

이 undefined값의 v로 배열은 length길이만큼 초기화가 되고, i=0 값 부터시작해서 배열에 할당된 길이만큼 v의 값이 채워지게 되는 것입니다.

 

채점 결과 [JavaScript]

 

728x90

댓글