Algorithm Study/Python

[백준 파이썬] # 1541 잃어버린 괄호

728x90
반응형

Silver II

# 1541 잃어버린 괄호

그리디 알고리즘

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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

 

풀이

a = input().split('-') # '-' 기준으로 분리
li = []

for i in a:
    cnt = 0
    i = i.split('+') # 각 i를 '+' 기준으로 분리
    for j in i:
        cnt += int(j) # 계산을 위해 숫자형으로 바꿔야 함
    li.append(cnt)

n = li[0]
for i in range(1, len(li)):
    n -= li[i]
print(n)

 

ex) input값이 a+b-c+d-e+f 일 때 예시

  • 첫번째 괄호 묶음을 계산해 양수로, 나머지 괄호 묶음을 계산해 모두 음수로 처리하면 값을 구할 수 있다
  • '-' 를 기준으로 분리하게 되면 (a+b), (c+d), (e+f)가 남는다.
  • 그리디 알고리즘 문제 풀이에서 특정 변수와 리스트 공간을 만들고, for 문의 결과값을 만들어진 공간에 적용하는 방식으로 풀이되는 모습을 볼 수 있었다

 

※ 백준에서 주어지는 예제 말고도 예외사항이 있는 지 생각해가며 풀어야 한다