https://school.programmers.co.kr/learn/courses/30/lessons/120824
문제 설명
정수가 담긴 리스트 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])
}
'코딩 문제 > 프로그래머스 [ JavaScript ]' 카테고리의 다른 글
[ 프로그래머스 / JavaScript ] 푸드 파이트 대회 (0) | 2022.11.06 |
---|---|
[ 프로그래머스 / JavaScript ] 짝수의 합 (0) | 2022.11.04 |
[ 프로그래머스 / JavaScript ] [ 2022 KAKAO BLIND RECRUITMENT ] 신고 결과 받기 (0) | 2022.10.26 |
[ 프로그래머스 / JavaScript ] 분수의 덧셈 (0) | 2022.10.25 |
[ 프로그래머스 / JavaScript ] 옷가게 할인 받기 (0) | 2022.10.25 |
댓글