본문 바로가기
Algorithm/프로그래머스

[프로그래머스] - 다트 게임 (파이썬)

by 2HS 2022. 1. 30.
def solution(dartResult):
    bonus = {'S': 1, 'D': 2, 'T': 3}
    option = ['*', '#']

    dart = []
    dartResult = dartResult.replace('10', 't')

    for i in range(len(dartResult)):
        if dartResult[i] == 't':
            dart.append('10')
        else:
            dart.append(dartResult[i])

    result = []
    number = 0
    for x in dart:
        if x not in bonus and x not in option:
            result.append(number)
            number = 0
            number += int(x)
        elif x in bonus:
            number = number ** bonus[x]
        elif x in option:
            if x == '*':
                number *= 2
                if len(result) >= 1:
                    result[-1] *= 2
            else:
                number *= -1
    result.append(number)

    answer = sum(result)
    return answer

 

2018 카카오 블라인드 1차 - 2번

1. bonus 딕셔너리 정의, option 리스트 정의

2. 숫자 10을 t로 바꿔주고 dart리스트에 한단어씩 append (단, t일경우 10으로 append)

3. for x in dart

    - 숫자이면 result에 이전의 number를 append, number 0으로 초기화, number = int(x)

    - bonus이면 보너스의 값 만큼 n제곱 (number = number**bonus[x])

    - option *이면 이전과 number 2배, #이면 -number

4. result의 합 리턴