[Python]알고리즘/백준
[그리디 알고리즘] ★ 1541번 - 잃어버린 괄호(완전탐색)
HSY_mumu
2022. 3. 21. 23:45
728x90
[백준] 1541번 - 잃어버린 괄호
1) 문제 해결 아이디어
- 기준으로 괄호를 쳤을 때 최솟값이 된다.
60+20-50+10-20+30 이 입력으로 들어오면
(60+20)-(50+10)-(20+30) 이렇게 괄호를 쳤을 때 최소값이 된다.
상식적으로 최소값을 만들기 위해서는 큰 값으로 뺴주어야 하는데
- 기준으로 나누었기 때문에 괄호 ( ) 안에는 항상 숫자 혹은 더하기로만 이루어진 식이 오게 된다.
1. - 기준으로 분리한 결과
["60+20", "50+10", "20+30"]
2. 각각을 + 기준으로 분리하고 int형 변환한 결과
[60, 20], [50, 10], [20, 30]
3. 첫번째 결과에서 나머지 결과들을 모두 뺀 결과
80 - 60 - 50 = -30
첫번째 괄호의 계산값에서 나머지 괄호들의 계산값을 모두 뺀 값이 정답이다.
2) 소스코드
s = input().split("-") # - 기준 분리
res = 0 # 최솟값
# 첫번째 괄호의 합 - (나머지 괄호의 합)
n = list(map(int, s[0].split("+")))
res += sum(n) # 첫번째 괄호의 합
for i in s[1:]:
n = list(map(int, i.split("+")))
res -= sum(n) # 나머지 괄호들의 합 빼기
print(res)
[참고] https://pacific-ocean.tistory.com/228
[백준] 1541번(python 파이썬)
문제 링크: https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리
pacific-ocean.tistory.com
728x90