Post

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

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

문제 링크


1. 아이디어

홀수끼리, 짝수끼리 순서대로 이어 붙인 수에 대해 합을 구하는 문제로 문자열 덧셈을 활용해 홀수끼리, 짝수끼리 이어 붙인 문자열을 구한 후 이를 다시 정수로 변환해서 더하는 방식으로 해결했다.


2. 복잡도

시간복잡도공간복잡도
$O(N)$$O(N)$

$N$ = num_list 길이


3. 코드

풀이 [Java][C++]

문자열 덧셈이 반복되므로 StringBuilder를 활용해 효율적으로 접근했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
    public int solution(int[] num_list) {
        StringBuilder odd = new StringBuilder();
        StringBuilder even = new StringBuilder();

        for (int x : num_list) {
            if (x % 2 == 1) {
                odd.append(x);
            } else {
                even.append(x);
            }
        }

        return Integer.parseInt(odd.toString()) + Integer.parseInt(even.toString());
    }
}

C++의 경우 string이 가변이므로 바로 더해줬다.

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

int solution(vector<int> num_list) {
    string odd = "";
    string even = "";

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

    return stoi(odd) + stoi(even);
}

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