본문 바로가기
자기개발/TIL

js에서 양의 정수를 받아 배열로 만들기

by 금화맘 2023. 7. 7.

오늘도 프로그래머스에서 배열관련 문제를 풀었다.

이번 문제의 이름은 배열만들기 1

n,k가 주어지는데 둘다 양의 정수고, n에서 k의 정수를 찾는 거였다.

function solution(n, k) {
    let m =Array.from({length:n},((v,i)=>i+1))
    var answer = m.filter((i)=> i%k ===0);

    return answer;
}

위의 풀이 방법이 오늘 내가 배운 array.from에다가 length를 통해 배열을 만들수 있게 해주는 것이었다.

처음에 당연히 for문으로 아래와 같이 풀었다.

그런데 이러면 내가 js의 새로운 문법들을 연습하는 의미가 없는거 같아서 뭐가 있을까 하다가 n은 그냥 정수니까 n을 배열로 만들어서 map, reduce, filter등등을 쓸 수 있게 바꿔보자를 생각했다.

 

function solution(n, k) {

    var answer = [];
 for(let i = 1; i<=n; i++){
      if(i % k === 0){
          answer.push(i)
       }
    }
    
    return answer;
}

그래서 찾아본 검색어가 js 숫자를 배열로

라고 검색하니까 이미 있는 134의 숫자를 쪼개서 [1,3,4] 이렇게 만든느 방법만 나왔었다.

그래도 뒤져보니 array.from({lenght:정수},((v,i)=>i+1))을 하면 내가 원하던 정수만큼의 수를 넣은 배열을 가질수 있게 된다.

즉 array.from({lenght:9},((v,i)=>i+1))라고 하면

[1,2,3,4,5,6,7,8,9]를 가진 배열이 만들어 지는 것.

만약 여기서 0부터 시작하고 싶고 9를 포함하고 싶지 않다면 array.from({lenght:9},((v,i)=>i))를 쓰면 된다. 

근데 0부터 시작하고싶고 9를 포함하고 싶다면 array.from({lenght:10},((v,i)=>i))하면 된ㄷ

만약 length를 외부서 받아오는 객체라면 k 라고 한다면 array.from({lenght:k+1},((v,i)=>i))로 하면 성공~!

 

인제 n의 배수를 꼭 i%n===0을 해야하는지 다시 찾아보러 갈 셈이다.

전에도 이걸 찾았던거 같은데...