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