본문 바로가기

Python/백준

#16 [백준/python] 1541번: 잃어버린 괄호

728x90

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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

 

💫 문제 분석

괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램

 

 

✔️ 코드분석

  • 첫줄에 식이 주어짐 -  ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어짐
  • 가장 처음과 마지막은 문자
  • 연속해서 두개이상의 연산자가 나타나지는 않고 5자리보다 많이 연속되는 숫자는 없음
  • 입력으로 주어지는 식의 길이는 50보다 작거나 같

 

- 가 나온 자리에 괄호를 넣으면 양수인 수도 음수가 되므로 결과 값이 가장 적게 나온다

 -를 기준으로 나누고 = 기준으로나눠 연산을 진행

 

3 + 4  + 11 - 8 + 9 

 

1. - 기준으로 나눔

(3+4+11)   (8+9)

 

2. +기준으로 나눠 연산

19  17  

 

3. 사이에 마이너스 연산 진행

19 - 17

 

 

 

 

 코드

exp = input().split('-') #'-'를 기준으로 split해서 exp 리스트에 저장

num = [] #'-'로 나눈 항들의 합을 저장할 리스트

for i in exp:
    sum = 0
    tmp = i.split('+') #덧셈을 하기 위해서 '+'를 기준으로 split
    for j in tmp: #split한 리스트의 각 요소들을 더해줌
        sum += int(j)
    num.append(sum) #각 항의 연산 결과(덧셈)를 num에 저장

n = num[0] #식의 제일 처음은 숫자로 시작하기 때문에 0번째 값에서 나머지 값들을 빼준다

for i in range(1,len(num)): #1번째 값부터 n에서 빼준다
    n -= num[i]
print(n)

 

🔴

tmp = i.split('+')    # +기준으로 split

 

 

 

 

 

'Python > 백준' 카테고리의 다른 글

#18 [python/백준] 2163번: 초콜릿 자르기  (0) 2023.10.25
#17 [python/백준] 11501번: 주식  (0) 2023.10.24
#15 [python] 2457번: 공주님의 정원  (0) 2023.10.22
#14 [python] 11399번: ATM  (0) 2023.10.21
#13 [python] 1026번: 보물  (0) 2023.10.21