알고리즘

백준 1541번 - split() 함수의 활용

jwjwvison 2022. 6. 23. 18:39

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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

split() 함수에 다음과 같이 문자열 인자를 주면 그 문자열을 기준으로 나눈 리스트를 반환한다.

import sys
print('10'.split('+'))
print('10+20'.split('+'))

 

 이 문제는 주어진 문자열을 '  '.join()함수로 먼저 한칸씩 띄어쓰기 문자열을 만든후 split()함수로 문자열을 리스트로 만든다.

'12+34' -> ['1','2','+','3','4']

 

 이후에는 -가 나올때 까지 문자열에 저장해놨다가 -가 나오면 저장해놨던 문자열을 다른 리스트에 저장해놓는다.

 이후 리스트가 완성되면 첫번째 원소만 더하고 나머지 원소들은 빼준다.

 그 이유는 합차 연산에서 가장 작은 수가 되려면 마이너스를 기준으로 끊어야 하기 때문이다.

import sys

s=input()
s=' '.join(s).split()
res=[]
string=''
for i in range(len(s)):
    
    if s[i] =='-':
        res.append(string)
        string=''
    else:
        string+=s[i]
        
res.append(string)

sol=0
for i in range(len(res)):
    s=res[i].split('+')
    summ=0
    for num in s:
        summ+=int(num)
    if i==0:
        sol+=summ
    else:
        sol-=summ
        
print(sol)

'알고리즘' 카테고리의 다른 글

백준 20920 (딕셔너리 정렬)  (0) 2022.12.27
연속합 - 백준 1912번  (0) 2022.06.17
분할 정복 예제 ( 괄호를 삽입하는 여러가지 방법)  (0) 2022.05.21
분할 정복  (0) 2022.05.21
그리디 알고리즘 예제  (0) 2022.05.19