문자열 관련 문제이기에 처음에 스택을 떠올렸다.
살짝 난감했던 부분은 dartResult를 숫자/보너스/옵션으로 구분지을 때 두 자리 이상의 수를 저장하는 것이 어려웠다.
따라서 스택보다는 조건문과 반복문으로 문제 해결을 했다.
어차피 숫자 뒤에는 반드시 보너스가 오므로 보너스가 들어올 때까지 숫자를 문자열에 저장했다가 한 번에 정수형 자료로 변환해주었다.
def solution(dartResult):
num = ''
bonus = {
'S':1,'D':2,'T':3
}
score = []
for i in range(len(dartResult)):
if dartResult[i].isdigit():
num += dartResult[i]
if dartResult[i].isalpha():
temp = int(num)**bonus[dartResult[i]]
num = ''
if 0<=i+1<len(dartResult):
if dartResult[i+1] == '#':
temp *= -1
score.append(temp)
elif dartResult[i+1] == '*':
if score:
score[-1] *= 2
temp *= 2
score.append(temp)
else:
score.append(temp)
else:
score.append(temp)
return sum(score)