chae._.chae

[Algorithm] 백준 #1541 잃어버린 괄호 본문

파이썬 알고리즘/BOJ

[Algorithm] 백준 #1541 잃어버린 괄호

walbe0528 2023. 6. 18. 20:42
728x90
반응형

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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

 

숫자와 +, -로 구성된 식을 입력받아 적절한 위치에 괄호를 삽입해 최솟값을 만드는 문제이다. 

 

🔎풀이 방법

 

1. 먼저 - 를 기준으로 식을 나눠준다. 

 

입력된 식이 55-50+40+30-20+10+30라면,

-를 기준으로 ['55', '50+40+30', '20+10+30'] 으로 식을 split()해준다.

 

2. +로 연결된 숫자를 계산해준다. 

 

[55, 120, 60]으로 + 기호를 계산해준다.

 

3. 각 숫자들 사이에서 빼기 연산을 진행해준다.

 

- 기호를 기준으로 나뉜 숫자이기에, -로 연결되어 있다. 따라서 각 숫자들 사이에 - 기호를 넣어 계산해준다.

 

# 1541 잃어버린 괄호
import sys
input = sys.stdin.readline

# cal = input().split('-')  # 55-50+40+30-20+10+30
# => 여기서 rstrip()을 해주지 않으면 ['55', '50+40+30', '20+10+30\n'] 이렇게 마지막에 줄바꿈 기호가 들어간다.
cal = input().rstrip().split('-')
 
# print(cal)  # ['55', '50+40+30', '20+10+30']  => - 기호를 기준으로 split 해준 식
array = []
for i in cal:
    num = i.split('+')
    sum = 0
    for j in num:
        sum += int(j)
    array.append(sum)
# print(array)  # [55, 120, 60]

result = array[0]
for i in range(1, len(array)):
    result -= array[i]
print(result)  # 55-120-60=55-180=125

 

728x90