Trey

백준 1541번: 잃어버린 괄호 - 파이썬 본문

알고리즘 문제 풀이 (Class 3)

백준 1541번: 잃어버린 괄호 - 파이썬

Trey Yi 2021. 3. 21. 17:15

백준 1541번: 잃어버린 괄호(www.acmicpc.net/problem/1541)

 

💡접근

  • 첫번째 숫자 다음 숫자부터, 마이너스 부호가 있을경우 다음 마이너스 부호가 나타나기전까지의 숫자들을 괄호처리하여 더한다. (아래의 그림을 참고하면 쉽게 이해될 것이다)
  • 그리고 마이너스 부호가 없는 입력값의 경우는 다 더하기!
  • 참고로, 예시를 보니 숫자의 위치는 바뀌지 않고, 괄호로 묶는다고해서 부호가 바뀌지는 않는다.

 

💡배운점 및 오답 원인

  • 생각보다 예외조건 처리하는것이 까다로웠다..

 

💡풀이 코드

input = input()

# 마이너스 부호가 있으면 분류하기
if '-' in input:
    subs = input.split('-')

    # 마이너스 부호가 있었던 숫자들의 합 구하기
    subs_sum = 0
    for i in range(1, len(subs)):
        # 더해야 할 숫자가 여러개인 경우
        if '+' in subs[i]:
            subs_sum += sum(map(int, subs[i].split('+')))
        # 더해야 할 숫자가 하나인 경우
        else:
            subs_sum += int(subs[i])
    first_sum = sum(map(int, subs[0].split('+')))  # 마이너스 부호 나오기 전 첫번째 숫자들의 합
    print(first_sum-subs_sum)  # 마이너스 부호 나오기전 숫자들의 합

# 마이너스 부호가 없으면 다 더하기
else:
    print(sum(map(int, input.split('+'))))