PS (Problem Solving)/Programmers

[프로그래머스] 숨어있는 숫자의 덧셈 (2) - 파이썬

캐럿노트 2023. 1. 30. 20:03

문제

https://school.programmers.co.kr/learn/courses/30/lessons/120864

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

설계

- 숫자의 경우 연속된 숫자(32의 경우 3, 2를 각각 더하는 것이 아니라 묶어서 32)를 더해야한다.

- start와 end를 사용하여 answer에 더할 범위 지정

def solution(my_string):
    answer, start, end = 0, 0, 1
    for i in range(len(my_string) - 1):
        if my_string[i].isdigit() and my_string[i + 1].isdigit():
            end += 1
        elif my_string[i].isdigit():
            answer += int(my_string[start:end])
            start, end = i + 1, i + 2	# 더한 후 다음 index를 가리킨다.
        else:
            start += 1	# 알파벳일 경우 index를 옆으로 이동한다.
            end += 1
            
    if my_string[start:end].isdigit():	# for문을 모두 순회하고 끝에 더하지 못한 숫자가 있다면 더해준다.
        answer += int(my_string[start:end])
    return answer