-
[Python] 백준(BOJ): 1541 잃어버린 괄호알고리즘/백준 2021. 10. 24. 16:18
문제
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
풀이
수식의 합이 최소가 되도록 계산해야 하는 문자열 greedy 문제이다.
a. 풀이
수식의 합이 최소가 되기 위해서는 - 연산자 뒤의 부분 수식의 값이 최대가 되어야 한다.
따라서 - 연산자를 기준으로 parsing을 수행했다.- 수식에 + 연산자만 남아있다면 남아있는 수를 모두 더하고 break
- - 연산자가 존재한다면, 해당 index 이후의 부분수식(_data)을 수식(data)에서 제거한 뒤 부분 수식에 대한 합연산을 수행하는 것을 반복
data = input() answer = 0 # 연산할 값이 남아있을때까지 계산 while data: # 수식에 더하기 연산만 있는 경우, 덧셈만 수행하고 바로 return if '-' not in data: num = [i for i in map(int, data.split('+'))] answer += sum(num) break for x in reversed(range(len(data))): if data[x] == '-': _data = data[x+1:] data = data[:x] break num = [i for i in map(int, _data.split('+'))] answer -= sum(num) print(answer)
'알고리즘 > 백준' 카테고리의 다른 글
[Python] 백준(BOJ): 1946 신입사원 (0) 2021.10.24 [Python] 백준(BOJ): 12845 모두의 마블 (0) 2021.10.24 [Python] 백준(BOJ): 1744 수 묶기 (0) 2021.10.23 [Python] 백준(BOJ): 1700 멀티탭 스케줄링 (0) 2021.10.23 [Python] 백준(BOJ): 1969 DNA (0) 2021.10.22