Algorithm

[백준/파이썬] 1541 잃어버린 괄호 - 그리디

마크투비 2022. 7. 18. 15:01

소스 코드

input_list = list(input())

num = (input_list.count('+') + input_list.count('-')) * 2 + 1
str_list = [0 for _ in range(num)]

a = ''
idx = 0
for i in range(len(input_list)):
    if input_list[i]=='+':      
        str_list[idx] = a
        idx += 1
        str_list[idx] = '+'
        idx += 1
        a = ''
    elif input_list[i]=='-':
        str_list[idx] = a
        idx += 1
        str_list[idx] = '-'
        idx += 1
        a = ''
    else:
        a += input_list[i]
    if i==len(input_list)-1:
        str_list[idx] = a

# 숫자에서 선행 0 제거하기
for i in range(len(str_list)):
    str_list[i] = str_list[i].lstrip('0')
    if str_list[i] == '':
        str_list[i] = '0'

i = 0
open = False
while True:
    if str_list[i] == '-':
        if open == True:
            str_list.insert(i, ')')
            open = False
        else:
            str_list.insert(i+1, '(')
            open = True
    if i == len(str_list) - 1:
        if open == True:
            str_list.append(')')
        break
    i += 1

str_answer = ''.join(str_list)
print(eval(str_answer))
  • 문제에서 주어진 테스트 케이스는 모두 통과하는데 계속 틀림으로 나와서 반례 찾고 틀린 부분 찾아내느라 시간이 많이 걸림