프로그래머스 Lv.0 홀수 vs 짝수

J·2023년 6월 8일
0

programmers

목록 보기
11/33

문제 링크

홀수 vs 짝수


문제 설명

정수 리스트 num_list가 주어집니다. 가장 첫 번째 원소를 1번 원소라고 할 때, 홀수 번째 원소들의 합과 짝수 번째 원소들의 합 중 큰 값을 return 하도록 solution 함수를 완성해주세요. 두 값이 같을 경우 그 값을 return합니다.

제한 사항

  • 5 ≤ num_list의 길이 ≤ 50
  • -9 ≤ num_list의 원소 ≤ 9

입출력 예

num_listresult
[4, 2, 6, 1, 7, 6]17
[-1, 2, 5, 6, 3]8

입출력 예 설명

입출력 예 #1

  • 홀수 번째 원소들의 합은 4 + 6 + 7 = 17, 짝수 번째 원소들의 합은 2 + 1 + 6 = 9 이므로 17을 return합니다.

입출력 예 #2

  • 홀수 번째 원소들의 합은 -1 + 5 + 3 = 7, 짝수 번째 원소들의 합은 2 + 6 = 8 이므로 8을 return합니다.

풀이

  1. num_list를 돌며 짝수와 홀수를 추출할 것임.
  2. i가 2로 나누어지는 수이면(짝수이면) 나머지는 0이 되므로 falsy, i가 홀수이면 나머지는 1이 되므로 truthy로 평가됨. 각 변수에 할당함.
  3. Math.max() 함수를 통해 짝, 홀수 중 최대값을 결정해 더 큰 값을 반환하게 함. 두 값이 같다면 자동으로 그 값을 return함.

코드

function solution(num_list) {
    
    let oddNum = 0;
    let evenNum = 0;
    
    for (let i = 0; i < num_list.length; i++) {
        i % 2 ? oddNum += num_list[i] : evenNum += num_list[i];
    }
    
    return Math.max(oddNum, evenNum);
}

다른 사람의 코드

function solution(n) {
    let o = e = 0;
    for (let i in n) i%2==0?o+=n[i]:e+=n[i];
    return Math.max(o,e);
}

생각

  • 코드를 더 짧게 쓰고싶다. 아직 배울 것이 많음.
    let [oddNum, evenNum] = [0, 0];
    • 구조 분해 할당으로 동시에 초기화 하거나,
    num_list.forEach((num, i) => {
    i % 2 ? (oddNum += num) : (evenNum += num);
    });
    • forEach 루프를 대신 사용해 코드를 줄일 수 있었음.
  • 바뀌는 값인 홀수, 짝수를 const로 선언해 TypeError가 나길래 한참 찾음. 정신 차리렴.
profile
벨로그로 이사 중

0개의 댓글

관련 채용 정보