[백준/파이썬] 1541번

민정·2023년 12월 16일
0

[백준/파이썬]

목록 보기
189/245
post-thumbnail

📍백준 1541번 문제

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

코드

#틀린 풀이
import re
ex = input()
temp = ''
cnt = 0
for i in ex:
    if i == '-':
        if cnt % 2 == 0:
            temp = temp + i + '('
            cnt += 1
        else:
            temp = temp + ')' + i
            cnt += 1
    else:
        temp += i
if cnt % 2 == 1:
    temp += ')'

pattern = r'(?<!\d)0+(\d+)'

res = re.sub(pattern, r'\1', temp)
print(eval(res))
#맞은 풀이
ex = input().split('-')
num = []
for i in ex:
    sum = 0
    temp = i.split('+')
    for j in temp:
        sum += int(j)
    num.append(sum)
res = num[0]
for i in range(1, len(num)):
    res -= num[i]
print(res)

풀이

'-'가 나오면 이후 '+'을 괄호로 묶어 풀면 된다.
해결책은 빨리 나왔는데 코드로 구현하는 데에 오래 걸렸다.

원래는 eval함수로 풀려했는데 0009-0009와 같이 0으로 시작하는 수는 풀 수 없다는 에러가 떴다. 그래서 패턴을 통해 0을 지우고 eval함수를 쓰려 했는데 이것도 에러가 떠서 다른 분의 코드를 참고했다.
먼저 '-'를 기준으로 문자열을 나눈 뒤, 다시 '+'를 기준으로 문자열을 나누고 마이너스 연산을 실행하면 된다.

profile
パㅔバ6ㅇr 덤벼ㄹΓ :-0

0개의 댓글