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

황준승·2021년 6월 2일
0
post-thumbnail

잃어버린 괄호 1541번

😜 문제 요약

괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.

😊 key point

-가 한번이라도 나온다면 그 다음 부터 어떤 기호가 들어오던 다 - 를 할 수 있다. 따라서 필자는 -오기 전과 후로 나누어 그 전에는 plus 배열, 그후에는 minus 배열에 넣어 계산하였다.

😁 코드

k = str(input())

plus = []
minus = []

flag = True

for i in range(len(k)):  
    if k[i] == '-':     # -가 등장 시 flag 변수는 False로 바뀐다. 
        flag = False
        
    if flag == True:
        plus.append(k[i])
    elif flag == False:
        minus.append(k[i])    

c = 0

sum1 = 0  # plus에 있는 값들의 합
sum2 = 0  # minus에 있는 값들의 합

# plus
for i in range(len(plus)-1,-1,-1):        # 뒤에서 부터 계산
    if plus[i] == '+' or plus[i] == '-':  
        c = 0                             # 부호 나올 시 자리 수 초기화
    else:
        sum1 += int(plus[i]) * pow(10,c)  # 숫자가 연속해서 등장 시 자리 수 증가
        c += 1    

c = 0

# minus
for i in range(len(minus)-1,-1,-1):       
    if minus[i] == '+' or minus[i] == '-':
        c = 0
    else:
        sum2 += int(minus[i]) * pow(10,c)
        c += 1    

print(sum1 - sum2)
profile
다른 사람들이 이해하기 쉽게 기록하고 공유하자!!

0개의 댓글