728x90
문제
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
# 괄호의 개수를 구하는 것이 아니라 식의 결과를 최소값으로 만드는 것이 핵심이다.
# 그럴려면 최초로 마이너스가 나오기 전까지는 더하고, 그 후 마이너스가 나오는 순간 다 빼주면 된다.
string = input().split("-") # 최초로 마이너스가 어디서 나오는지 확인
sum = 0
for i in string[0].split("+"): # 최초의 마이너스 전까지의 숫자를 다 더한다.
# + 수식으로 묶여져있을수도 있으니 split("+")를 사용해 하나씩 숫자를 받아온다.
sum+=int(i) # 최초의 마이너스 전 까지의 합은 순수한 +의 합이다.
for i in string[1:]: # 수식의 2번째 원소부터 받아오는데
for j in i.split("+"): # 원소가 30이나 40처럼 단일 원소일 수도 있고
# 20+30이나 40+50+70처럼 수식으로 묶여져있을수도 있으니 split("+")을 사용해 하나씩 받아온다.
sum -= int(j) # 순수 합 sum에서 원소를 하나씩 빼준다.
print(sum)
# 예시
# 25+35+40-70-30+40-50+30-65 입력으로 들어오면
# string = [25+35+40, 70, 30+40, 50+30, 65]
# string[0] = 25+35+40 -> string[0].split["+"] = 25 35 40 -> sum = 100
# 100 - 70(string[1]) - 30(string[2][0]) - 40(string[2][1]) - 50(string[3][0]) - 30(string[3][1]) - 65(string[4][0]) = -185
* 아래 깃허브를 참고해주세요
https://github.com/JunSeokCheon
JunSeokCheon - Overview
JunSeokCheon has 6 repositories available. Follow their code on GitHub.
github.com
'알고리즘 > baekjoon' 카테고리의 다른 글
[알고리즘/baekjoon] 1931_회의실 배정(python) (0) | 2021.11.24 |
---|---|
[알고리즘/baekjoon] 1780_종이의 개수(python) (0) | 2021.11.23 |
[알고리즘/baekjoon] 1260_DFS와 BFS(python) (0) | 2021.11.23 |
[알고리즘/baekjoon] 1012_유기농 배추(python) (0) | 2021.11.23 |
[알고리즘/baekjoon] 2606_바이러스(python) (0) | 2021.11.23 |
댓글