알고리즘

(중요! map관련)프로그래머스 Level 1 - 나누어 떨어지는 숫자 배열 (Javascript)

또롱또 2022. 5. 14. 11:02
728x90

https://programmers.co.kr/learn/courses/30/lessons/12910

function solution(arr, divisor) {
    var answer = [];
    
    // 배열 오름차순 정렬
    arr.sort((a, b)=>(a-b));
    
    // 배열의 각 인덱스에 접근해서 divisor로 나눈 나머지값이 0인경우를 빼낸다
    for(let i=0; i<arr.length; ++i){
        if(arr[i] % divisor === 0){
            answer.push(arr[i])
        }
    }
    
    //만약에 answer에 길이가 0이면, 즉 push된게 하나도 없으면 -1을 push해준다
    if(answer.length === 0)
        answer.push(-1);
    
    // 정답
    return answer;
}

정답은 여러개가 있는데

filter() 보단 map() 이 조금 더 끌려서 map() 정답을 가져왔다.

리액트 하려면 map()이해도가 높아야하는데 걱정이다.

앞으로의 문제는 map()을 쓰려한다 for 문은 이제 그만쓰고

정답을 해석하자면 그냥 map으로 풀어썼다.

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

}

map을 이용해 각 인덱스에 접근하는거 같은데 몰랐던걸 알게되었다.

아래 코드이다.

    arr.map((o) => {
        o % divisor === 0 && answer.push(o);
    })

map 안에서 && 를 쓰면 true값을 뒤에서 작업할 수 있고

|| 를 쓰면 false값을 뒤에서 작업할 수 있다.

728x90