[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.