숨어있는 숫자의 덧셈(2) (programmers Lv0)

송성원·2024년 1월 13일
1

programmers

목록 보기
9/9
post-thumbnail

숨어있는 숫자의 덧셈(2)

isdigit()이란 함수는 숫자인지 알려주는 함수라 그걸 사용하기로 하였다.
처음에는 물론 결국은 문자열안에서 숫자만을 합하는 알고리즘은 짰지만...
연결된 문자일 경우에 짜는 방법은 도저히 머릿속에 나타나질 않아 블로그 도움을 받고 이해했다.

내가 푼 방법(문자열에서 각 index별 더하기)

def solution(my_string):
    total = 0
    
    for i in range (len(my_string)):
        if my_string[i].isdigit():
            total += int(my_string[i])
        else :
            i += 1
        
    return total 
        

=> 두가지를 수정해야된다는 걸 알았다. 하지만 각각의 index별 숫자를 더한다면 그것도 필요할 거 같아 위에 적어놓도록 하겠다.

수정된 코드(연결되는 문자열의 숫자들까지 해결)


def solution(my_string):
    total = 0
    current = 0
    
    for i in my_string:
        if i.isdigit():
            current = current * 10 + int(i)
        else:
            total += current
            current = 0
    
    return total + current
        
  1. current = current * 10 + int(i)
    다음부분도 isdigit()함수에 걸리게 된다면 결국 앞선 문자인 숫자는 10의 자리가 되기에 곱하기 10을 해준다. 또 다음번이 숫자면 100의 자리가 된다.

  2. total 값을 아까는 했지만 만약에 마지막 문자가 숫자가 아닌체로 끝난다면 상관이 없지만, 숫자일 경우 마지막의 경우는 더해주지 않고 return total에 의해 알고리즘이 어긋나버린다. 그렇기에 마지막에 current 값을 추가로 더해주면 이문제가 해결된다.

profile
개발에 도전하는 문과생입니다.

0개의 댓글