728x90
반응형
https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
풀이
이 문제는 언제 괄호를 넣어야 가장 작은 값이 나오는지 찾는 문제이다.
이 문제의 키는 괄호를 '-'가 시작되고나서 열고 다음 '-'가 나올때 닫는것이다. 그래야 -부호가 나왔을때 가장 작은 숫자를 만들 수 있기 때문이다.
예를 들면 s=1+2+3-1+5+3-3+2라는 문자열이 주어졌으면 1+2+3-(1+5+3)-(3+2) 다음과 같이 괄호를 쳐야 가장 작은 값을 가질 수 있다. 만약 괄호안에 -부호가 있으면 괄호안의 숫자에 더하는 꼴이 되기 때문에 괄호안은 +부호만 있고 괄호의 앞이 -부호가 되야 최소값을 가질 수 있다.
그래서 위의 방법으로 코드를 작성했다.
- 우선 문자열을 '-'로 잘라 배열에 저장한다.
- 그리고 배열의 첫번째 인덱스를 꺼내 다시 '+'로 잘라 first배열에 저장한다.
- 첫번째 인덱스는 +이기 때문에 ans에 각 인덱스를 더해준다.
- 그리고 s배열의 길이가 0보다 크면 이후 담긴 인덱스는 '-'부호를 가진 괄호이기 때문에 +로 잘라준 뒤 ans에 빼준다.
1
2
3
4
5
6
7
8
9
10
11
|
s=input().split('-')
ans=0
first=s.pop(0).split('+')
for i in first:
ans+=int(i)
if len(s)>0:
for i in s:
i=i.split('+')
for j in i:
ans-=int(j)
print(ans)
|
cs |
728x90
반응형
'Python3 > 백준 알고리즘' 카테고리의 다른 글
2022.03.14 [백준] (python 파이썬) 거스름돈 (0) | 2022.03.14 |
---|---|
2022.03.10 [백준] (python 파이썬) IOIOI (0) | 2022.03.10 |
2022.03.07 [백준] (python 파이썬) 2Xn 타일링 2 (0) | 2022.03.07 |
2022.03.07 [백준] (python 파이썬) 구간 합 구하기 4 (0) | 2022.03.07 |
2022.03.06 [백준] (python 파이썬) Four Squares (0) | 2022.03.06 |
댓글