[JS] 짝수 홀수 개수 programmers filter, forEach

0

코딩테스트

목록 보기
18/80
post-thumbnail

🎀 문제

정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

function solution(num_list) {
    var answer = [];
    return answer;
}

🎀 내 답변

function solution(num_list) {
    var answer = [];
    let num1 = [];
    let num2 = [];
    num_list.forEach(element => {
        if(element % 2 === 0){
            num1.push(element)
        }else if(element % 2 !== 0){
            num2.push(element)
        }
    });
    answer.push(num1.length, num2.length)
    return answer;
}

solution([1, 2, 3, 4, 5]);

👉🏻 forEach문을 쓴 이유?

배열로 받아온 숫자들은 모두 object 객체로 넘어오게 된다.
console.log(typeof numbers)를 찍어보면

라고 찍힌 것을 확인할 수 있고 해결하기 위해서 forEach문을 썼다.

🎀 더 나은 답변 (filter 의 사용)

function solution(num_list) {
  return [
    num_list.filter((num) => num % 2 === 0).length,
    num_list.filter((num) => num % 2 === 1).length,
  ];
}
  • filter는 배열에 주로 사용되어진다.
  • 주어진 요건에 만족하는 모든 요소를 모아 새로운 배열로 반환한다.
console.log(num_list.filter((num) => num % 2 === 0))
// [2, 4]
console.log(num_list.filter((num) => num % 2 === 1))
// [1, 3, 5]
  1. 필터를 사용하여 배열에서 짝수와 홀수를 각 새로운 배열에 담는다.
  2. 각각 length를 사용하여 새로운 배열의 길이를 구한다.
  3. return에 [] 배열을 열고 그 안에 두 배열의 길이를 각각 넣어서 바로 반환해 준다.
profile
일단 해. 그리고 잘 되면 잘 된 거, 잘 못되면 그냥 해본 거!

0개의 댓글