728x90
반응형

1. 문제
프로그래머스 알고리즘 문제풀이 - 자바스크립트 [ 약수 구하기 ]

2. 시도해본 것들

24의 결과값을 봤을때, 약수는 해당 값으로 나눴을때 딱 떨어지는

나머지가 0인 값이다.

 

3. 해결과정

모두 탐색해야하기 때문에 for문을 떠올렸다.

1부터 모두 돌아서 각각 n을 나눴을때 나머지가 0이 되는 값을 배열에 넣었다.

도대체 어떻게 풀지라고 생각들었던 것인데,

왜 정답이 저렇게 나오지?

라고 생각할때 잘 풀리는 것 같다.

 

4. 알게 된 점

나의 코드

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

 

 

남의 코드

function solution(n) {
    return Array(n).fill(0).map((v, index) => index+1).filter((v) => n%v===0);
}

fill은 처음 보는 함수인데 Array(n)은 Array(20)과 같이 숫자(또는 문자열) 20을 반환할 것 이다.

그럼 fill(0)은 배열에 20개를 모두 0 으로 가득채운다.

map으로 각각 요소에 인덱스 번호로 1을 더해주면

인덱스는 0부터 시작하기에 [1,2,3,4, ... 20]이 들어갈 것이고,

filter를 통해 해당 요소가 나머지가 0일 때에만 값을 반환하도록 한다.

 

해당 함수들을 알더라도 위와 같은 풀이로 풀지 못했겠지만,

새로운 방식과 함수를 배워서 뜻 깊다.

728x90
반응형

+ Recent posts