백준(1541) - 잃어버린 괄호 Python

1 분 소요

백준(BOJ) - 잃어버린 괄호

문제풀이 : 그리디 알고리즘, 파이썬

해결방법

문제를 잘못 이해해서 문제 이름처럼 ‘‘잃어버린 괄호’’ 가 되었던 문제이다.

도저히 풀리지 않아서 구글링을 해보고, 내가 문제를 잘 못 이해했다는 것을 깨닫고 허탈했던 문제였다.

괄호를 사용해서 최저값을 구하는 문제이므로 ‘-‘ 를 기준으로 나눠주고

+인 부분은 따로 더 해주고 마지막에 빼주면 해결할 수 있다.

예시로 “55 - 40 + 45 + 35 - 25” 를 입력받는 다고 하면

[“55”, “40+45+35”, “25”] 로 나누고

계산된 [55, 120, 25]의 값을

55 - 120 - 25 하면 된다.

a = input().split('-')
num = []
for i in a:
    cnt = 0
    s = i.split('+')
    for j in s:
        cnt += int(j)
    num.append(cnt)
n = num[0]
for i in range(1, len(num)):
    n -= num[i]
print(n)
엉뚱하게 문제를 이해했던 방법

괄호를 포함해 숫자를 입력 받는다고 해서 “55-(-45)+75” 와 같이 입력받을 수 있다는거에 꽂혀서결과값에서 음수값은 빼주고, 양수값은 더해줘야 한다는 더 어렵게 풀었었다.

이런 방식의 문제가 나와도 괜찮겠다는 생각도 하게되었다…

# sik = input()
# number = ['0','1','2','3','4','5','6','7','8','9']

# res = []
# n = ""
# sik = sik.replace("(-","(")
# for s in sik:
#     if s in number:
#         n += s
#     elif s == '(':
#         n += '-'
#     else:
#         if n:
#             res.append(int(n))
#         n = ""
# res.append(int(n))
# result = 0
# for i in range(len(res)):
#     if i == 0:
#         result += res[i]
#     elif res[i] > 0:
#         result -= res[i]
#     else:
#         result += res[i]
# print(result)

댓글남기기