코딩테스트
프로그래머스 level0 숨어있는 숫자의 덧셈 (2)
choyou831
2024. 7. 14. 22:38
v
우선 문제를 보고 처음한 생각은 문자열과 숫자를 구분해야된다고 생각했다.
조건문을 통해 my_string에서 숫자를 뽑아내고 연속된 숫자가 있는경우에는 숫자를 변수에 더해서 저장해야된다고 생각했다.
def solution(my_string):
answer = []
number = ''
result = 0
for char in my_string:
if char.isdigit():
number += char
else:
if len(number)>0:
answer.append(number)
number = ''
for i in range(len(answer)):
answer[i] = int(answer[i])
return sum(answer)
먼저 for문과 isdigit()을 사용하여 문자와 숫자를 분리하였다.
그리고 if char.isdigit()을 사용하며 연속된 문자가 있을경우 number에 숫자를 더해주었다.
그리고 만약 문자가 들어올 경우에는 지금까지 저장된 숫자는 answer에 append해준다음,number를 초기화 하였다.
그후 answer에 들어간 숫자들을 전부 더해주었다.
처음 2가지 테스트케이스는 전부 맞았지만 정답률이 100%가 아니라 반례를 찾는도중 마지막에 문자가아닌 숫자가 들어오는경우 인식을 못한다. 그래서 마지막에 숫자가 들어오는 경우를 생각하여 코드를 수정하니
def solution(my_string):
answer = []
number = ''
result = 0
for char in my_string:
if char.isdigit():
number += char
else:
if len(number)>0:
answer.append(number)
number = ''
if len(number) > 0:
answer.append(number)
for i in range(len(answer)):
answer[i] = int(answer[i])
return sum(answer)
정답이 나온다.
배운점: 문제를 틀리더라고 확인하지않은 테스트케이스가 뭐가 있을까란 생각을 해야겠다.
또한 isdigit은 특정 문자열이 숫자로만 이루어져있으면 True 아님 Flase이다