항해 프로그래머스

항해3주차 자바스크립트 프로그래머스 - 짝수 홀수 개수

완두노예 2023. 1. 27. 10:39

 

처음 풀이

function solution(num_list) {
num_list = OddNumber, EvenNumber
if num_list / 2 === 0
    return Evennumber;
    else return OddNumber;
    console.log(OddNumber, EvenNumber);

}

 

수정 풀이

function solution(num) {
    var answer = '';
    if (num % 2 === 0) {
        return answer = "Even"
    } else {
        return answer = "Odd"
    }
    return answer;
}

최종 풀이

function solution(num_list) {
    let answer = [];
    let even = [];
    for (let i=0; i<num_list.length; i++){
        if (num_list[i] % 2 === 0){
            even.push(i);
        }
    }
    answer = [even.length, num_list.length - even.length]
    return answer;
}

다른 풀이

+=1 이 무엇인지 이해가 안갔음

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) {//for문 돌려서 나눈값에
      obj['odd'] += 1 //숫자를 하나씩 증가해 대입해간다는 뜻
    } else {
      obj['even'] += 1 // +=1 숫자를 하나씩 늘려간다.
    } 
  }
  
  return [obj['even'], obj['odd']]
}
function solution(num_list) {
    let num1 = 0, num2 = 0;
    num_list.forEach(value=>{
        if(value % 2 === 1) num1++;
        else num2++;
    })

    return [num2, num1];
}

체크 - for(let a of ) 형태, 배열과 인덱스를 잘 활용한 코드, 짝수 홀수의 나머지를 인덱스로 활용

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

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

    return answer;
}
function solution(num_list) {
  return [
    num_list.filter((num) => num % 2 === 0).length,
    num_list.filter((num) => num % 2 === 1).length,
  ];
}
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])
}
function solution(list) {
    return list.reduce((acc, cur) => (cur & 1 ? acc[1]++ : acc[0]++, acc), [0, 0])
}
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;
}
function solution(num_list) {
    return [num_list.filter(v=>v%2===0).length, num_list.filter(v=>v%2===1).length];
}
function solution(num_list) {
    return num_list.reduce((acc, v) => {
        acc[v % 2 === 0 ? 0 : 1] += 1
        return acc
    }, [0, 0]);
}
const is_even = (num) => {
  return num % 2 === 0;
};

const not = (func) => (args) => {
  return !func(args);
};

function solution(num_list) {
  return [
    num_list.filter(is_even).length,
    num_list.filter(not(is_even)).length,
  ];
}
function solution(num_list) {
    const answer = Array(2)
    answer[1] = num_list.filter(el => el % 2 !== 0).length
    answer[0] = num_list.filter(el => el % 2 === 0).length
    return answer
}
function solution(num_list) {
    const answer = [];
    let odd = 0;
    let even = 0;
    num_list.forEach(i => {
        i % 2 === 0 ? even++ : odd++;
    });
    answer.push(even, odd);
    return answer;
}