본문 바로가기

백준 write-up/정렬 & 그리디

[백준] 잃어버린 괄호 : 1541번 - Python

728x90
반응형

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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

 

 

문제를 풀면서 몰랐던 개념

 

- for 문 range 자리에 리스트 원소를 split 메소드로 나눈 값들만큼의 반복을 설정할 수 있다.

 

 

 

문제의 접근 방법

 

- '-' 부호가 나오기 전까지 모두 괄호 안으로 묶어서 더해버리기

- 수식이 주어지면 '+'를 기준으로 먼저 더해주고 남겨진 값들을 빼주면 항상 최솟값을 만들 수 있다.

 

 

 

내가 막혔던 부분

 

처음 아이디어를 떠올리는 과정에서 막혔다. -> 마이너스 부호를 두고 그 나머지 값들을 묶어 다 더해준 후 빼면 될 것이라고 생각함. (구체적으로 구현하지 못 함)

 

 

 

문제 풀이 방법

 

수식 N을 입력 받아 '-' 부호를 기준으로 나눠서 저장하기 -> N의 0번째 인덱스를 '+' 부호를 기준으로 나눈 후 그 값들을 정수로 형변환하여 다 더해서 s에 저장하기 -> 그리고 N의 남은 요소들(1번째 요소부터 끝까지)을 가지고 그 값을 '+' 부호를 기준으로 나누어서 정수로 형변환한 후, s에서 다 빼주기 -> 위 과정들을 거쳐 계산된 s 출력해주기

 

 

 

소스코드

N = input().split('-')

s = 0
for i in N[0].split('+'):
    s += int(i)
for i in N[1:]:
    for j in i.split('+'):
        s -= int(j)

print(s)
728x90
반응형