Hikenny25

1541 - 잃어버린 괄호 본문

baekjoon (solved.ac)/class 3 Solve

1541 - 잃어버린 괄호

hikenny 2022. 10. 26. 17:45

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

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

 

- 수학

- 구현

 

import sys
input = sys.stdin.readline

m = input()[:-1]
n = ''
a = ''

flag = 1
for i in m:
    if i == '-' or i == '+':
        n += str(int(a))
        a = ''
        
        if i == '-': flag = -1

        if flag == 1:
            n += '+'
        else:
            n += '-'
    else:
        a += i

n += str(int(a))
print(eval(n))

 

기본 아이디어는 일단 수학적으로 접근해서, 하나의 - 가 오면 그 뒤의 수는 모두 - 로 만들 수 있다는 아이디어를 사용했다! 그리고 eval 함수로 string을 그대로 계산해서 출력했다

 

사실 더 이쁘게 짤 수 있을 것 같은데 너무 힘들어서 그냥 푼 걸로 만족...

 

 

추가)

import sys
input = sys.stdin.readline

def evalwithouterror(st):
    st = st.split('+')
    for x in range(len(st)):
        st[x] = int(st[x])
    
    return sum(st)

m = input()[:-1].split('-')
a = evalwithouterror(m[0])

for i in range(1, len(m)):
   a -= evalwithouterror(m[i])

print(a)

split 함수를 사용해서 훨씬 보기 좋은 코드를 짰다!

 

split을 띄어쓰기를 통한 입력받을 때만 사용했는데, 어떤 문자를 기준으로 문자열을 구별해 리스트에 저장시키는 좋은 함수였다.. 아마 앞으로 요긴하게 쓰이지 않을까 싶다

'baekjoon (solved.ac) > class 3 Solve' 카테고리의 다른 글

1012 - 유기농 배추  (0) 2022.10.27
1931 - 회의실 배정  (1) 2022.10.26
9375 - 패션왕 신해빈  (0) 2022.10.26
9461 - 파도반 수열  (0) 2022.10.25
11659 - 구간 합 구하기 4  (0) 2022.10.25
Comments