Post

[Programmers] #181887 - 홀수 vs 짝수 [Java][C++][Python]

정수 리스트에서 홀수 번째 원소들의 합과 짝수 번째 원소들의 합 중 더 큰 값을 반환하는 워밍업 문제.

[Programmers] #181887 - 홀수 vs 짝수 [Java][C++][Python]

문제 링크


1. 아이디어

첫 원소를 1번으로 셀 때 홀수 번째 원소는 0-indexed 인덱스로는 짝수 자리(0, 2, 4, …)에, 짝수 번째 원소는 홀수 자리에 놓인다. 리스트를 한 번 훑으며 인덱스의 홀짝으로 두 그룹의 합을 각각 구한 뒤 더 큰 값을 반환한다. 두 합이 같으면 그 값이 곧 최댓값이므로 별도 분기가 필요 없다.


2. 복잡도

접근시간공간
풀이$O(N)$$O(1)$

($N$ = num_list의 길이)


3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
    public int solution(int[] num_list) {
        int odd = 0, even = 0;
        for (int i = 0; i < num_list.length; i++) {
            if (i % 2 != 0) {
                odd += num_list[i];
            } else {
                even += num_list[i];
            }
        }

        return Math.max(odd, even);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <bits/stdc++.h>
using namespace std;

int solution(vector<int> num_list) {
    int odd = 0, even = 0;
    for (int i = 0; i < num_list.size(); i++) {
        if (i % 2) {
            odd += num_list[i];
        } else {
            even += num_list[i];
        }
    }

    return max(odd, even);
}
1
2
def solution(num_list):
    return max(sum(num_list[::2]), sum(num_list[1::2]))

This post is licensed under CC BY 4.0 by the author.