본문 바로가기
Develop/백준 (python)

[백준] 1541번: 잃어버린 괄호 (python)

by Tarra 2022. 2. 9.

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)
 
= 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