백준(1541) - 잃어버린 괄호 Python
백준(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)
댓글남기기