Post

[Programmers] #181935 - 홀짝에 따라 다른 값 반환하기 [Java][C++][Python]

n이 홀수면 이하 홀수의 합을, 짝수면 이하 짝수의 제곱합을 반환하는 워밍업 문제.

[Programmers] #181935 - 홀짝에 따라 다른 값 반환하기 [Java][C++][Python]

문제 링크


1. 아이디어

양의 정수 n이 홀수면 1부터 n까지의 홀수를 모두 더한 값을, 짝수면 2부터 n까지의 짝수를 각각 제곱해 더한 값을 반환하면 되는 문제다. 홀짝에 따라 순회 시작값과 누적하는 값(그 자체 또는 제곱)만 다를 뿐 구조는 동일해서, 두 경우 모두 2씩 증가하는 반복문으로 값을 누적했다.


2. 복잡도

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

($N$ = 입력값 n)


3. 코드

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
    public int solution(int n) {
        if (n % 2 == 1) {
            int sum = 0;
            for (int i = 1; i <= n; i += 2) {
                sum += i;
            }
            return sum;
        } else {
            int sum = 0;
            for (int i = 2; i <= n; i += 2) {
                sum += i * i;
            }
            return sum;
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
using namespace std;

int solution(int n) {
    if (n % 2) {
        int sum = 0;
        for (int i = 1; i <= n; i += 2) {
            sum += i;
        }
        return sum;
    } else {
        int sum = 0;
        for (int i = 2; i <= n; i += 2) {
            sum += i * i;
        }
        return sum;
    }
}
1
2
3
4
5
def solution(n):
    if n % 2:
        return sum(range(1, n + 1, 2))
    else:
        return sum(i * i for i in range(2, n + 1, 2))

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