def solution(dartResult):
answer = 0 ; k = []
a = 0
num = [str(i) for i in range(11)]
for i in range(len(dartResult)):
if dartResult[i]=="S":
if dartResult[i-1]=='0':
if i>=2 and dartResult[i-2]=='1':
a = 10
else:
a = 0
else:
a = int(dartResult[i-1])
if i+1 <= len(dartResult)-1:
if dartResult[i+1] == "*":
if k != []:
k[-1] = k[-1]*2
a = (a*2)
elif dartResult[i+1] == "#":
a = (a*(-1))
k.append(a)
elif dartResult[i]=="D":
if dartResult[i-1]=='0':
if i>=2 and dartResult[i-2] in num:
a = 10
else:
a = 0
else:
a = int(dartResult[i-1])
if i+1 <= len(dartResult)-1:
if dartResult[i+1] == "*":
if k != []:
k[-1] = k[-1]*2
a = ((a**2)*2)
elif dartResult[i+1] == "#":
a = ((a**2)*(-1))
else:
a = a**2
else:
a = a**2
k.append(a)
elif dartResult[i]=="T":
if dartResult[i-1]=='0':
if i>=2 and dartResult[i-2] in num:
a = 10
else:
a = 0
else:
a = int(dartResult[i-1])
if i+1 <= len(dartResult)-1:
if dartResult[i+1] == "*":
if k != []:
k[-1] = k[-1]*2
a = ((a**3)*2)
elif dartResult[i+1] == "#":
a = ((a**3)*(-1))
else:
a = a**3
else:
a = a**3
k.append(a)
return sum(k)
풀이
문자열을 split해서 계산식을 세울까 했는데 숫자가 한자리수만 있는게 아니라 S, D, T 기준으로 if문을 나누어 작성했다.
S, D, T 전에는 항상 숫자가 나오는데 그 수가 0이면 10인지, 0인지 확인 후
S = single이면 단순 더하기, D = double로 제곱, T = Triple이면 세제곱을 한다.