Home [Python] 백준 1541번 : 잃어버린 괄호
Post
Cancel

[Python] 백준 1541번 : 잃어버린 괄호

Problem

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

Solution

식의 결과를 최소로 만들기

  • 사고과정
    어떻게 해야 결과가 최소로 나올까?
    빼는 값을 최대로 만들자 (뺄 수 있는 최대로 빼기)
    “-“와 인접한 수 + ··· + 수를 모두 묶어서 계산

  • 해결방법
    “-“로 split하기
    eval함수 활용해서 계산

  • 예외처리
    왼쪽에 0이 n개 붙은 경우? try-except문, lstrip(‘0’) 활용
    0으로만 이루어진 수는? 빈 문자열이 되면 0으로

code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
a = input()
b = a.split("-") # '-'를 기준으로 분류

for i in range(len(b)):
    try:
        b[i] = eval(b[i]) # 문자열로 된 계산식을 계산해서 결과를 저장
    except SyntaxError: # 앞에 0이 붙은 경우
        tmp = list(b[i].split('+'))
        for j in range(len(tmp)):
            tmp[j] = tmp[j].lstrip('0') if tmp[j].lstrip('0')!='' else '0' # 요소가 0으로만 된 경우 '0' 반환
        b[i] = sum(map(int,tmp))

res = b[0]

for i in range(1, len(b)): # 맨 앞 요소부터 빼나가기
    res -= b[i]
print(res)
This post is licensed under CC BY 4.0 by the author.

[Python] 백준 2447번 : 별 찍기 - 10

[Python] 백준 1009번 : 분산처리