본문 바로가기

코딩테스트/Python

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

문제


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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

 

 

풀이


인터넷 코드가 더 깔끔하여 가져와보았다.

 

깔끔한 풀이

a = input().split('-') #-로 나누어줌
num = []
for i in a: # 나눈 문자 순회
    cnt = 0 
    s = i.split('+') # +로 나눔
    for j in s: # +로 나눈 문자열을 순회하면서
        cnt += int(j) # cnt에 더하기
    num.append(cnt) # 계산한 숫자를 리스트에 넣기
n = num[0] # 첫 숫자에서 빼기 위해서 첫 숫자로 초기화
for i in range(1, len(num)):
    n -= num[i] # 빼주기
print(n)

 

-로 구분하여 나눈다. ( -가 시작되면 다음 -가 나오기전까지 괄호를 묶어줘야 가장 큰 숫자를 뺄수있기 때문이다)

 

나눈 문자열을 다시 +로 구분하여 나누고 계산해준다.

 

첫 숫자에서 나머지 숫자를 빼준다.

 

 

 

내 코드

x = input()
num=''
sol_str=''
for i in x:
    if i=='-' or i=='+':
        sol_str+=num.lstrip('0')
        num=''
        sol_str+=i
    else:
        num+=i
sol_str+=num.lstrip('0') # 앞에 있는 0을 제외함
sol_str=sol_str.split('-') # -로 나눔

sol_str = eval('-'.join(list(map(str,map(eval,sol_str))))) # 계산하고 str로 바꿔서 -로 바꾸고 다시 계산함

print(sol_str)

풀이 방법은 같은데 코딩이 다르다. 나는 뭔가 뱅글뱅글 돌아간 느낌