1541번: 잃어버린 괄호
문제 )
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.
그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
입력 :
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
출력 :
첫째 줄에 정답을 출력한다.
풀이)
시간 제한도 2초로 널널한 편인데다가 주어지는 식의 길이는 50보다 작으므로 상당히 자유롭게 코드를 짤 수 있겠다고 생각했다.
그렇게 탄생한 코드는 다음과 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
word = input()
full = "" # 숫자의 구분을 위해 -가 나오면 )를 추가하고 문자열을 넣음
for i in word:
if i == '-':
full += ")"
full += i
else:
full += ")"
# 예시) 55-50+40 => 55)-50+40)
a = full.rstrip(")").split(")")
# 마지막의 )는 필요없으므로 삭제하고 )를 기준으로 split
answer = []
for i in a: # ['55', '-50+40'] 이런식으로 된 리스트를 순회
if i[0] == "-": # 첫 시작이 "-" 이라면
i = i.lstrip("-")
b = sum(map(int, i.split("+"))) # "+"를 기준으로 나누고 합을 구함
answer.append(-b) # answer 리스트에 "-"형태로 삽입
else:
b = sum(map(int, i.split("+")))
answer.append(b) # "+"의 경우 분할 후 더하기만 함.
print(sum(answer))
# 전체 리스트의 합을 구한다.
|
cs |
그리디가 성격과 맞는지 실버 2인데 실패 없이 한번에 성공했다..
출처 : https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
'Develop > 백준 (python)' 카테고리의 다른 글
[백준] 2635번: 수 이어가기 (python) (0) | 2022.02.09 |
---|---|
[백준] 2309번: 일곱 난쟁이 (python) (0) | 2022.02.09 |
[백준] 11659번: 구간 합 구하기 4 (python) (0) | 2022.02.08 |
[백준] 11399번: ATM (python) (0) | 2022.02.08 |
[백준] 11047번: 동전 0 (python) (0) | 2022.02.07 |