Post

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