Post

[Programmers] #181928 - 이어 붙인 수 [Java][C++][Python]

정수 리스트에서 홀수와 짝수를 각각 이어 붙인 두 수의 합을 구하는 워밍업 문제.

[Programmers] #181928 - 이어 붙인 수 [Java][C++][Python]

문제 링크


1. 아이디어

num_list를 한 번 순회하면서 홀수는 odd에, 짝수는 even에 자릿수를 이어 붙인다. odd = odd * 10 + x 형태로 누적하면 별도의 문자열 변환 없이 홀수들을 순서대로 이어 붙인 수를 만들 수 있고, even도 같은 방식으로 처리한다. 순회가 끝나면 두 값을 더해서 반환하면 된다.


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
15
class Solution {
    public int solution(int[] num_list) {
        int odd = 0, even = 0;

        for (int x : num_list) {
            if (x % 2 == 1) {
                odd = odd * 10 + x;
            } else {
                even = even * 10 + x;
            }
        }

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

int solution(vector<int> num_list) {
    int odd = 0, even = 0;

    for (int x : num_list) {
        if (x % 2) {
            odd = odd * 10 + x;
        } else {
            even = even * 10 + x;
        }
    }

    return odd + even;
}
1
2
3
4
5
6
7
8
9
def solution(num_list):
    odd = even = 0

    for x in num_list:
        if x % 2:
            odd = odd * 10 + x
        else:
            even = even * 10 + x
    return odd + even

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