모든 글

백준 1541번 잃어버린 괄호

목차 3개 섹션

아이디어

빼기 기호가 처음으로 나온 다음부터는 그 다음 기호가 더하기든 빼기든 상관 없이 모든 수를 빼주면 된다. - 이후 다시 -가 나오기 전까지 나오는 +에 괄호를 쳐 주면 모두 뺄 수 있기 때문이다.

코드

expString = input()
expString += ' '
i = 0
ans = 0
minus = False

expLength = len(expString)
while i < expLength:
    if '0' <= expString[i] <= '9':
        startIndex = i
        while '0' <= expString[i] <= '9':
            i += 1
        endIndex = i
        i -= 1
        currentNum = int(expString[startIndex:endIndex])
        if minus is True:
            ans -= currentNum
        else:
            ans += currentNum
    elif expString[i] == '-':
        minus = True
    i += 1

print(ans)

처음 입력받은 문자열에 공백 문자를 더해주는 이유는 다음 문자가 숫자가 아닐 때 까지 i를 증가시키는 부분에서 index out of range 에러가 나는 것을 방지하기 위함이다.

백준 1541번 잃어버린 괄호 온라인 채점 제출 결과

여담

오랜만에 푸니까 재밌다. 한옥영 교수님의 자료구조 시간에 했던게 조금 도움이 됐을지도?..

댓글 보기 · 쓰기

GitHub에서 댓글 보기