본문 바로가기
알고리즘 풀이/백준

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

by char_lie 2023. 5. 7.
반응형

https://www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net

잃어버린 괄호 문제

+와 -로 이루어진 숫자 계산식에 괄호를 쳐서 값을 최소로 만드는 문제

단순 계산 아이디어를 떠올려서 split을 이용해 풀 수 있었다.

📌문제 접근 포인트

1. +와 -로 이루어진 숫자 계산식에 괄호를 쳐서 최솟값을 만들려 한다는 건 즉 - 사이의 숫자들을 모두 더해서 빼주면 된다는 뜻이다.
예를 들어 25-20+15-5+10+15 이런 숫자가 있다면 최소로 만들어주려면 25 - (20 + 15) - (5 + 10 + 15)로 만들어서 계산하면 -40으로 최소를 얻을 수 있다.
2. split을 통해 먼저 -를 기준으로 나누어주고, 나누어진 리스트를 더해주기 위해서 각각 + 로 나누고, 각 값들을 더해준 요소들을 리스트에 모아준다.
3. -를 기준으로 빼줘야 하니 리스트 맨 앞의 숫자에서부터 나머지 숫자들을 빼나 가면 최솟값을 구할 수 있다.

⚙  내가 푼 정답 코드

import sys
S = sys.stdin.readline().strip().split('-') # - 기준으로 괄호를 치면 최소로 만들 수 있음
temp = []
for i in S: # 각 요소에 대해
    cnt = 0
    for j in i.split('+'): # +로 짼 요소들을
        cnt += int(j) # 더하고
    temp.append(cnt) # 모아주자
# 모아준 temp들을 맨 앞 인덱스 제외하고 전부 빼면 최소값
result = temp[0]
for i in temp[1:]:
    result -= i
print(result)

 

반응형

댓글