본문 바로가기
알고리즘/BOJ

[BOJ] 1541번 잃어버린 괄호 / 사용언어 : 파이썬(python)

by 바른 호랑이 2021. 12. 24.
728x90
반응형

※ 문제링크

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

해당 문제는 그리디 알고리즘의 개념을 활용하면 풀 수 있는 문제였다. 최솟값을 만들기 위해서는 '-'뒤에 '+'가 존재하면,

'+'연산을 우선적으로 처리하여 빼야할 값을 최대화 시켜주면 조건 달성이 가능했다. 풀이방법과 코드는 아래와 같다.

1. 입력값을 받은 후 replace함수를 활용하여 '-'부호를 '-('로 변환한 후 '-'로 분할하여 새로운 리스트를 만든다.

2. 새로운 리스트에 변수들 중 '('를 가지고 있는 요소들을 더한 값(mi)과 나머지 값들을 더한 값(pl)을 저장할 변수를 만들고 저장한다.

3.  나머지 값들의 합(pl)에서 '('를 가지고 잇는 요소들을 더한 값(mi)를 빼주고 그 값을 출력한다.

 

N = input()
K = N.replace('-', '-(').split('-')
pl = 0
mi = 0
for i in range(len(K)):
    if K[i][0] == '(':
        K[i] = K[i][1:] 
        if '+' in K[i]:
            mi += sum(list(map(int, K[i].split('+'))))
        else:
            mi +=int(K[i])
    else:
        if '+' in K[i]:
            pl += sum(list(map(int, K[i].split('+'))))
        else:
            pl += int(K[i]) 
print(pl-mi)

 

P.S 개발자가 되기위해 공부중입니다. 잘못된 부분을 댓글로 남겨주시면 학습하는데 큰 도움이 될 거 같습니다.

728x90
반응형

댓글