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

Gaeun·2022년 11월 2일
1

짝수 홀수 개수

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

나의 풀이

내가 자주 쓰는 방법으로, 막힘 없이 이 문제를 풀어내겠다는 생각으로 작성하였다. 그래서 다른 사람들의 코드와는 다르게 길지만 그래도 읽었을 때 무엇을 풀고자 하는지 잘 알 수 있다고 생각한다. 하지만... 그래도 가독성 높게, 짧게 작성할 수 있는 코드라면 짧게 작성하도록 노력해야겠다고 생각한 오늘의 문제였다.

function solution(num_list) {
  // 객체 만들기
  const obj = { 'even': 0, 'odd': 0}
    // 배열 순회하면서 객체에 넣기
    // 짝수인 경우에는 key가 odd로
    // 홀수인 경우에는 key가 even으로
  for (let i = 0; i < num_list.length; i++) {
    if (num_list[i] % 2 === 1) {
      obj['odd'] += 1
    } else {
      obj['even'] += 1
    }
  }
  
  return [obj['even'], obj['odd']]
}

다른 사람의 풀이

// 다른 사람의 풀이 1
function solution(num_list) {
    var answer = [0,0];

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

    return answer;
}

// 다른 사람의 풀이 2
function solution(num_list) {
  const evenLength = num_list.filter(n => n % 2 === 0).length;
  return [evenLength, num_list.length - evenLength];
}

좋아요가 8개나 있었던 풀이 1번.
처음 이 코드를 읽었을 땐 for...of 메서드에 내가 익숙하지 않아서 이게 무슨 말인지... 하며 약 2분 가량 생각했다. 그러다 이 코드를 이해하게 된 순간 정말 이렇게도 코드를 쓸 수 있구나 하며 감탄했다. 나도 이렇게 알고리즘 문제를 풀 수 있도록 여러 문제를 접해야겠다고 생각했다.

풀이 2번은 filter() 메서드를 사용하였다. 함수의 테스트를 통과하는 배열을 모아서 새로운 배열을 만드는 메서드로 이 코드에서는 짝수의 길이를 구하기 위해 filter()를 사용한 후 .length를 사용하였다. 이 방법은 내가 생각할 수 있었던 방법이라 직접 코드를 작성해보며 손에 익고 머리에 익을 수 있도록 복습했다.

profile
🌱 새싹 개발자의 고군분투 코딩 일기

0개의 댓글