https://school.programmers.co.kr/learn/courses/30/lessons/120853
코드
def solution(s):
answer = 0
s_list = s.split()
for i in range(len(s_list)):
if s_list[i].isdigit():
answer += int(s_list[i])
else:
answer -= int(s_list[i-1])
return answer
주어진 문자열에서 숫자만 더하는 문제이다.
문자열에 Z가 있으면 Z 바로 앞에 위치한 숫자는 다시 빼야 한다.
처음에는 문자열에서 숫자 여부를 먼저 확인했고 숫자이면 더하고, 아니면 바로 전에 더했던 숫자는 빼는 코드를 작성했다.
하지만 5개의 테스트 케이스에서 마지막 테스트 케이스는 통과하지 못하였다.
그 이유는 isdigit은 음수는 판별할 수 없기 때문이다.
문자열에 마이너스(-)가 포함되어 있으면 False를 반환하기 때문에 숫자 판별 조건이 아닌 Z인지 아닌지를 판별하는 조건문을 작성해야 했다.
아래와 같이 Z인지 판별하는 조건문을 사용하면 위 과정에서 음수 판별로 생기는 오류를 만나지 않고 해결할 수 있었다.
문제에서 주어지는 문자열은 Z로 시작하지 않는다고 명시해 주었기 때문에 if 조건문으로 Z판별을 해도 오류가 발생하지 않는다.
def solution(s):
answer = 0
s_list = s.split()
for i in range(len(s_list)):
if s_list[i] == 'Z':
answer -= int(s_list[i-1])
else:
answer += int(s_list[i])
return answer
반응형