[Programmers] #120864 - 숨어있는 숫자의 덧셈 (2) [Java][C++][Python]
[Programmers] #120864 - 숨어있는 숫자의 덧셈 (2) [Java][C++][Python]
1. 아이디어
소문자, 대문자, 자연수로 구성된 문자열 my_string에 대해 자연수들의 합을 구하는 문제로 my_string에서 자연수가 아닌 부분을 전부 공백 문자로 변환 후 숫자 부분만 취해서 합을 구하면 된다.
2. 복잡도
| 접근 | 시간 | 공간 |
|---|---|---|
| 풀이 | $O(N)$ | $O(N)$ |
($N$ = my_string의 길이)
3. 코드
풀이 [Java][C++][Python]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;
class Solution {
public int solution(String my_string) {
char[] arr = my_string.toCharArray();
for (int i = 0; i < arr.length; i++) {
if (!Character.isDigit(arr[i])) arr[i] = ' ';
}
StringTokenizer st = new StringTokenizer(new String(arr));
int sum = 0;
while (st.hasMoreTokens()) {
sum += Integer.parseInt(st.nextToken());
}
return sum;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <bits/stdc++.h>
using namespace std;
int solution(string my_string) {
for (char& c : my_string) {
if (!isdigit(c)) c = ' ';
}
stringstream ss(my_string);
int sum = 0;
int x;
while (ss >> x) sum += x;
return sum;
}
1
2
3
def solution(my_string):
s = "".join(c if c.isdigit() else " " for c in my_string)
return sum(map(int, s.split()))
This post is licensed under CC BY 4.0 by the author.