내용 복습/알고리즘

프로그래머스 1단계 - 나누어 떨어지는 숫자 배열

jskim4695 2024. 1. 22. 14:52

처음에 내가 생각한 방식 역시 filter를 사용하여 삼항연산자로 푸는 방식이었다.

하지만 문법적으로 자잘한 에러가 났고 배열 메소드의 사용법을 잘 익혀야겠다고 생각하게 되었다.

특히 answer에 arr.filter를 할당하는 것이 헷갈렸던 점이다. filter를 쓰고 또 조건문에서 push를 써야된다고 생각하니 로직이 꼬였다. 

function solution(arr, divisor) {
    var answer = arr.filter(v => v%divisor == 0);
    return answer.length == 0 ? [-1] : answer.sort((a,b) => a-b);
}

 

 

 

결국 문법적인 에러에 계속 부딪혀 푸는 방식을 수정하여

function solution(arr, divisor) {
    var answer = [];
    for(i=0; i<arr.length; i++) {
        if(arr[i] % divisor == 0) {
            answer.push(arr[i]);
        }
    }
    if(answer.length == 0) {
        answer.push(-1);
    }
    answer.sort((a,b) => a-b);
    return answer;
}

 

이런 방식으로 풀긴 했지만, 훨씬 길고 메모리 낭비가 심하다.