백준 [ALGORITHM] - 잃어버린 괄호 (1541)
2023. 4. 1. 16:13ㆍ코딩/백준 [ALGORITHM]
반응형

잃어버린 괄호라는 문제이다.
해당 코드를 짜기 전에 가장 오래 생각 했던 부분은
어디에 괄호를 넣어야 가장 작은 수가 나오는지? 이다.
예를 들어, 10-20+30-40이 주어졌다고 생각해보자.
여기서 양수인 숫자가 -로 변했을 때, 수가 더 작아지게 된다.
따라서 음수 뒤에 양수가 온다면 괄호에 포함시켜주면 된다는 것이다.
따라서 원래라면 10-20+30-40 = -20이 나와야 하지만.
10-(20+30)-40 = -80이 나오게 된다.
참고로 문자열을 입력 받고 난 후 계산은 파이썬의 eval함수를 이용하였는데,
여기서 나는 굳이 괄호를 사용하지 않고, 배열을 이용하여 -사이에 있는 값을 더해주고,
새로운 배열에 옮겨서 10 - 50 - 40 을 eval에 넣고 돌렸다.
import re
def parse_expression(expr):
pattern = r'(\d+|[\-*/()])'
tokens = re.findall(pattern, expr)
return tokens
def calculate_between_dashes(lst):
nums = []
result = []
for item in lst:
if item == '-':
result.append(str(sum(nums)))
nums = []
result.append(item)
else:
nums.append(int(item))
result.append(str(sum(nums)))
return result
text = input()
tokens = parse_expression(text)
last = calculate_between_dashes(tokens)
result = ' '.join(s for s in last)
print(eval(result))
반응형
'코딩 > 백준 [ALGORITHM]' 카테고리의 다른 글
백준 [ALGORITHM] - 스택 (10828) (0) | 2023.04.15 |
---|---|
백준 [ALGORITHM] - 이상한 곱셈 (1225) (0) | 2023.04.08 |
백준 [ALGORITHM] - 합분해 (2225) (0) | 2023.04.05 |
백준 [ALGORITHM] - 조합 (2407) (0) | 2023.02.04 |
백준 [ALGORITHM] - Javascript (0) | 2023.02.02 |