반응형
https://www.acmicpc.net/problem/1541
-앞의 숫자는 다 더하고 -뒤의 숫자만 괄호를 치면 된다. 시키는 대로 괄호를 추가한 뒤 파이썬의 eval함수를 통해 입력받은 문자열을 자동으로 연산하도록 프로그램을 짰다.
앞에 0이 붙은 경우 eval함수가 작동하지 않아서 int로 변환하는 작업을 했다.
n = input()
num_list = []
s = ''
for i in n:
if i.isdigit():
s += i
else:
num_list.append(str(int(s)))
num_list.append(i)
s = ''
num_list.append(str(int(s)))
check = False
for i in range(len(num_list)):
if num_list[i] == '-':
if check:
num_list.insert(i, ')')
num_list.insert(i+1, '(')
check = True
if check:
num_list.append(')')
print(eval(''.join(num_list)))
돌려보니 TypeError가 발생했다. 어떤 부분이 원인인지 알 수 없어서 다른 방식을 참고했다.
-의 앞에 있는 값은 모두 더한 후 그 값에 -뒤에 있는 값을 빼주면 된다.
split을 사용하면 isdigit()과 빈 문자열로 일일이 숫자를 만들지 않아도 된다.
n = input().split('-')
result = 0
for i in n[0].split('+'):
result += int(i)
for i in n[1:]:
for j in i.split('+'):
result -= int(j)
print(result)
반응형
'알고리즘' 카테고리의 다른 글
백준 2636 치즈 자바 (0) | 2022.03.05 |
---|---|
백준 3085 파이썬 (0) | 2021.11.23 |
백준 1931 파이썬 (0) | 2021.11.17 |
백준 13305 주유소 파이썬 (0) | 2021.11.17 |
백준 1449 파이썬 (0) | 2021.11.17 |