내가 쓴 코드
def solution(d):
answer = 0
cur_s = 0
pre_s = 0
pre_o = 0
i = 0
while i < len(d):
if d[i].isdecimal():
n = 0
while d[i].isdecimal():
n = int(d[i]) + n * 10
i += 1
i -= 1
pre_s = cur_s
cur_s = n
elif d[i] == 'S':
answer += cur_s
elif d[i] == 'D':
answer += cur_s**2
cur_s **= 2
elif d[i] == 'T':
answer += cur_s**3
cur_s **= 3
elif d[i] == '*':
if pre_o == '*':
answer += cur_s + pre_s*2
elif pre_o == '#':
answer += cur_s - pre_s
else:
answer += cur_s + pre_s
pre_o = '*'
elif d[i] == '#':
answer -= cur_s*2
pre_o = '#'
i += 1
return answer
배운 코드
import re
def solution(dartResult):
bonus = {'S' : 1, 'D' : 2, 'T' : 3}
option = {'' : 1, '*' : 2, '#' : -1}
p = re.compile('(\d+)([SDT])([*#]?)')
dart = p.findall(dartResult)
for i in range(len(dart)):
if dart[i][2] == '*' and i > 0:
dart[i-1] *= 2
dart[i] = int(dart[i][0]) ** bonus[dart[i][1]] * option[dart[i][2]]
answer = sum(dart)
return answer