다트 게임

박고은·2023년 4월 19일
0

코딩테스트 연습

목록 보기
11/34

import re

def solution(dartResult):
    arr = []
    result = re.findall(r'[0-9]+[SDT][*#]?', dartResult)
    bonus = ['S', 'D', 'T']
    
    for r in result:
        number = re.sub(r'[^0-9]', '', r)
        r = r.replace(number, '')
        number = int(number)**(bonus.index(r[0])+1)
        arr.append(number)
        
        if r[-1]=='*':
            n = arr.pop()
            if arr:
                arr[-1] *= 2
            arr.append(n*2)
            
        elif r[-1]=='#':
            arr[-1] *= -1
    
    return sum(arr)

*이 앞 숫자까지 두 배가 되게 하므로 배열의 pop 함수 사용(스택)
배열에 각자 계산한 결과를 저장했다가 전체 합 구하기

0개의 댓글