[프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차] 다트 게임 문제 풀이



1. 문제

https://programmers.co.kr/learn/courses/30/lessons/17682

2. 풀이

def solution(dartResult):
    values = []
    i = 0
    while i < len(dartResult):
        # 숫자 만들기
        num = ''
        while dartResult[i].isdecimal():
            num += dartResult[i]
            i += 1
        num = int(num)

        # 해당 숫자에 대한 보너스 확인
        if dartResult[i] == 'S':
            values.append(num)
        elif dartResult[i] == 'D':
            values.append(num ** 2)
        elif dartResult[i] == 'T':
            values.append(num ** 3)
        i += 1

        if i == len(dartResult):
            break

        # 해당 숫자에 대한 옵션 확인
        if dartResult[i] == '*':
            if len(values) == 1:
                values[0] = values[0] * 2
            else:
                values[-1] = values[-1] * 2
                values[-2] = values[-2] * 2
            i += 1
        elif dartResult[i] == '#':
            values[-1] = -values[-1]
            i += 1

    return sum(values)