ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 8.6.일요일
    TIL( Today I Learned) 2023. 8. 6. 22:14
    • 숨어있는 숫자의 덧셈 (2)
    • 난 어려워서 거의 쳇 gpt 도움을 많이 받아서 풀었었다. 이번에 다시 보면서, 나름 확실히 이해하려고 했다.

    문제 설명

    문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • 1 ≤ my_string의 길이 ≤ 1,000
    • 1 ≤ my_string 안의 자연수 ≤ 1000
    • 연속된 수는 하나의 숫자로 간주합니다.
    • 000123과 같이 0이 선행하는 경우는 없습니다.
    • 문자열에 자연수가 없는 경우 0을 return 해주세요.

     

    입출력 예

    my_string result
    "aAb1B2cC34oOp" 37
    "1a2b3c4d123Z" 133

    입출력 예 설명

    입출력 예 #1

    • "aAb1B2cC34oOp"안의 자연수는 1, 2, 34 입니다. 따라서 1 + 2 + 34 = 37 을 return합니다.

    입출력 예 #2

    • "1a2b3c4d123Z"안의 자연수는 1, 2, 3, 4, 123 입니다. 따라서 1 + 2 + 3 + 4 + 123 = 133 을 return합니다.

     

    쳇답

     

    def solution(my_string):

        num_list = []

        num_str = ""

        

        for char in my_string:

            if char.isdigit():

                num_str += char

            else:

                if num_str:

                    num_list.append(int(num_str))

                    num_str = ""

        

        if num_str:

            num_list.append(int(num_str))

        

        answer = sum(num_list)

        return answer

     

     

     

     

     

    def solution(my_string):

        

        num_list = []

        num_str = ""

     

        for char in my_string:

            if char.isdigit():

                num_str += char

            elif num_str:

                num_list.append(int(num_str))

                num_str = ""

     

        if num_str:

            num_list.append(int(num_str))

     

        answer = sum(num_list)

     

        return answer

     

     

    내 답

     

    import re

     

    def solution(my_string):

        numbers = re.findall(r'\d+',my_string)

        int_num_list = [int(num) for num in numbers]

        aa = int_num_list

        aaa = sum(aa)

        answer = aaa

     

        return answer

     

     

    먼저, 문자열에서 숫자를 추출하기 위해 빈 리스트와 빈 문자열을 생성합니다.

     

    my_string = "aAb1B2cC34oOp"

    num_list = []

    num_str = ""

     

     

    그리고 문자열을 한글자씩 순회하며, 각 글자가 숫자인지를 판별합니다.

     만약 현재 글자가 숫자라면, 그 글자를 숫자 문자열에 추가합니다.

     

    for char in my_string:

        if char.isdigit():

            num_str += char

     

    만약 현재 글자가 숫자가 아니라면, 숫자 문자열이 비어있지 않은 경우에는 

    숫자 문자열을 정수로 변환하여 리스트에 추가합니다. 

    그리고 숫자 문자열을 초기화합니다.

     

        elif num_str:

            num_list.append(int(num_str))

            num_str = ""

     

     

    모든 글자를 순회한 후에도 숫자 문자열이 비어있지 않은 경우, 

    마지막 숫자 문자열을 리스트에 추가합니다.

     

    if num_str:

        num_list.append(int(num_str))

     

     

    마지막으로 리스트에 저장된 숫자들의 합을 구하여 반환합니다.

     

     

    answer = sum(num_list)

    print(answer)

     

     

    import re

     

    def solution(my_string):

        numbers = re.findall(r'\d+',my_string)

        int_num_list = [int(num) for num in numbers]

        aa = int_num_list

        aaa = sum(aa)

        answer = aaa

        return answer

     

     

    이 코드는 문자열에서 숫자를 찾아내서 그 숫자들의 합을 구하는 함수입니다. 

     

    1. `re.findall` 메소드를 사용해 문자열에서 숫자만 추출합니다. `r'\d+'`는 정규표현식으로서, 문자열에서 1개 이상의 연속된 숫자를 찾아냅니다.

    2. 추출한 숫자들은 문자열 형태로 저장되어 있으므로, `int()` 함수를 사용해 정수형으로 변환합니다.

    3. 변환한 숫자들의 리스트를 `sum()` 함수를 사용해 모두 더합니다.

    4. 마지막으로, 더한 값을 `return` 키워드를 사용해 반환합니다.

     

    def solution(my_string):

        s = ''.join(i if i.isdigit() else ' ' for i in my_string)

        return sum(int(i) for i in s.split())

     

     

    import re

     

    def solution(my_string):

        return sum([int(i) for i in re.findall(r'[0-9]+', my_string)])

     

     

    내가 찾던 답

     

    def solution(my_string):

        answer = 0

        temp = ''

        for i in my_string:

            if i.isdigit():

                temp += i

            else:

                if temp:

                    answer += int(temp)

                    temp = ''

        if temp:

            answer += int(temp)

        return answer

     

     

    내가 찾던답 2

     

    def solution(my_string):

        intch = "0"

        answer = 0

        for ch in my_string:

            if ch.isdigit():

                intch += ch

            else:

                answer += int(intch)

                intch = "0"

        answer += int(intch)

        return answer

    'TIL( Today I Learned)' 카테고리의 다른 글

    8.8.화요일  (0) 2023.08.08
    8.7.월요일 코딧 강의 , 프로그래머스 복습  (0) 2023.08.07
    8.5.토요일  (0) 2023.08.05
    8.4.금요일// 프로그래머스 복습과 재도전 & 코딧 강의  (0) 2023.08.04
    8.2.수요일  (0) 2023.08.02
Designed by Tistory.