2023. 1. 2. 10:27ㆍcode/[프로그래머스] python
문제
문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
❗제한사항❗
- 1 ≤ my_string의 길이 ≤ 1,000
- 1 ≤ my_string 안의 자연수 ≤ 1000
- 연속된 수는 하나의 숫자로 간주합니다.
- 000123과 같이 0이 선행하는 경우는 없습니다.
- 문자열에 자연수가 없는 경우 0을 return 해주세요.
입출력 예
입출력 예 설명
입출력 예 #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):
my_string+="A"
answer = 0
number = 0
for var in my_string:
if var.isdigit()==True:
number=number*10+int(var)
else:
answer+=number
number=0
return answer
📝설명
답으로 출력될 answer과 문자열에 숨은 숫자를 찾아 저장하는 number을 0으로 미리 저장한다.
for문을 활용하여 my_string의 하나하나를 가져오고, 만약 숫자라면 int()를 통해 현재 문자열로 되어있는 var을 숫자로 바꾸고, 현재의 number에 10을 곱한 값에 숫자 var을 더하도록 했다.
이렇게 한 이유는, for문을 시작하기 전에 number에 0을 저장해두었는데, 처음으로 숫자가 들어온다면 1이 오면 바로 1로 들어가지고, 그 다음 var이 숫자라면 1이 10을 곱하여 자연스럽게 num이 계산된다.
숫자가 아닌 경우엔 else문으로 빠지며, return될 answer에 number을 더하고, number을 0으로 재설정한다.
이렇게 하면 테스트 모드가 돌아가지만, 마지막이 숫자인 경우에는 answer에 num이 더해지지 않은 채 숫자가 끝나버리게 되는 문제가 발생한다.
따라서 마지막이 숫자인 경우를 대비하기 위해서 my_string에 숫자가 아닌 임의의 알파벳을 하나 추가하는 걸 for문보다 앞선 부분에 넣어서 결과가 제대로 출력되도록 했다.
➕개선한다면?
💻 문제 출처
코딩테스트 연습 - 숨어있는 숫자의 덧셈 (2) | 프로그래머스 스쿨 (programmers.co.kr)
'code > [프로그래머스] python' 카테고리의 다른 글
[코딩 테스트 연습 입문] 평행 (0) | 2023.01.02 |
---|---|
[코딩 테스트 연습 입문] 삼각형의 완성조건 (2) (0) | 2023.01.02 |
[코딩 테스트 연습 입문] 저주의 숫자 3 (0) | 2023.01.01 |
[코딩 테스트 연습 입문] 로그인 성공? (0) | 2022.12.30 |
[코딩 테스트 연습 입문] 외계어 사전 (0) | 2022.12.30 |