본문 바로가기
코딩 문제/프로그래머스 [ JavaScript ]

[ 프로그래머스 / JavaScript ] 짝수 홀수 개수

by CODESIGN 2022. 10. 29.

https://school.programmers.co.kr/learn/courses/30/lessons/120824

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명


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

 

 

제한사항


  • 1 ≤ num_list의 길이 ≤ 100
  • 0 ≤ num_list의 원소 ≤ 1,000

 

 

입출력 예


num_list result
[1, 2, 3, 4, 5] [2, 3]
[1, 3, 5, 7] [0, 4]

 

 

입출력 예 설명


입출력 예 #1

  • [1, 2, 3, 4, 5]에는 짝수가 2, 4로 두 개, 홀수가 1, 3, 5로 세 개 있습니다.

입출력 예 #2

  • [1, 3, 5, 7]에는 짝수가 없고 홀수가 네 개 있습니다.

 

 

나의 풀이


function solution(num_list) {
    var answer = [0,0];
    for (let i = 0; i < num_list.length; i++) {
        if (num_list[i] % 2 == 0) { // 짝수의 개수를 늘려준다.
            answer[0]++;
        } else { // 홀수의 개수를 늘려준다.
            answer[1]++;
        }
    }
    return answer;
}

 

 

 

다른 풀이


아래의 3개 풀이다 런타임은 비슷하다. 다만 코드가 깔끔하고 저렇게 사용하는 방법들을 익숙해져 보고자 기록에 남겼다.

 

#1

num_list의 나머지로 바로 answer index에 개수를 더해 주었다! 생각지 못한 방법이다. 조금 더 코드를 효율적이게 개선하는 방법을 생각하면서 코드를 적어야겠다는 생각이 들었다.

function solution(num_list) {
    var answer = [0,0];

    for(let a of num_list){
        answer[a%2] += 1
    }

    return answer;
}

 

#2

이분은 filter을 사용해서 풀었다. 

function solution(num_list) {
  return [
    num_list.filter((num) => num % 2 === 0).length,
    num_list.filter((num) => num % 2 === 1).length,
  ];
}

 

#3

나도 reduce를 사용해서 풀고 싶었는데 아직 문법이 약해서 완성하지 못했는데 덕분에 한수 배워간다.

function solution(num_list) {
    return num_list.reduce(([even, odd], curr) => {
        return [
            curr % 2 === 0? even + 1 : even,
            curr % 2  === 1? odd+1 : odd 
        ]
    }, [0,0])
}

 

 

댓글