https://programmers.co.kr/learn/courses/30/lessons/17682
def solution(dartResult):
scores = []
bonuses = {"S" : 1, "D": 2, "T": 3}
i = 0
while i < len(dartResult):
score = int(dartResult[i])
if dartResult[i+1] == '0':
score = 10
i += 1
bonus = bonuses[dartResult[i+1]]
option = 1
scores.append([score, bonus, option])
i += 2
if i >= len(dartResult):
break
if dartResult[i] == '*':
if len(scores) == 3:
scores[2][2] *= 2
scores[1][2] *= 2
elif len(scores) == 2:
scores[1][2] *= 2
scores[0][2] *= 2
else:
scores[0][2] *= 2
i += 1
elif dartResult[i] == '#':
scores[-1][2] = -1
i += 1
answer = 0
for score, bonus, option in scores:
answer += score**bonus*option
return answer
문자열을 하나씩 잘라보면서 확인하고 점수 계산에 필요한 정보들을 배열에 담아 저장해주었다.
배열이 완성된 다음 반복문을 돌면서 점수 총합계를 냈다.
문자열을 자를 때, 점수가 10점인 경우 점수를 갱신하고 인덱스를 한 칸 이동해주어야 한다는 것에 주의해야 한다.