[Greedy search] 1541_잃어버린 괄호
내 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import sys
#입력
exp = list(sys.stdin.readline().split('-'))
exp = [l.strip() for l in exp]
answer = 0
#계산
for n in exp[0].split('+'):
answer += int(n)
for n in exp[1:]:
for s in n.split("+"):
answer -= int(s)
#출력
print(answer)
exp
: 수식 입력을 받아와'-'
로 나누어 list 로 저장
괄호를 칠 때 기호의 순서를 생각했다
'-'
뒤에'+'
:'+'
전부 다 괄호로 묶어줄때 최소'-'
뒤에'-'
: 그대로 계산시 최소'+'
뒤에'-'
: 그대로 계산시 최소'+'
뒤에'+'
: 그대로 계산시 최소
때문에 받은 수식을 '-'
로 나누어 저장하였다.
이 후 '-'
로 나눴을때의 첫번째항 은 덧셈하여 answer 에 따로 더한 뒤 나머지 항들은 '+'
인자로 split 하여 answer 에서 전부 빼준다
회고
1
2
3
4
5
6
7
8
9
10
11
12
13
import sys
exp = list(sys.stdin.readline().split('-'))
exp = [l.strip().lstrip('0') for l in exp]
print(exp)
answer = 2*eval(exp[0])
for s in exp:
s = eval(s)
answer -= s
print(answer)
이 코드는 내가 처음 냈던 코드이다
syntax error가 났는데, 이유는 exp = [l.strip().lstrip(‘0’) for l in exp] 이 부분에서 만약 수식 입력이 0009-0002+0001
이렇게 들어오면 3번째 항인 0001의 전처리가 이루어지지 않아 eval
함수에서 오류가 난다
eval
함수 사용을 지양해야 할 것 같다