title: "[프로그래머스] [1차] 다트 게임 Python 파이썬 해설 (Level 1) - 이도훈"
cleanUrl: "programmers/17682"
description: "프로그래머스 Level 1 문제 [[1차] 다트 게임]의 풀이를 정리합니다."

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

import re

def solution(dartResult):
    scorelist = []
    powlist = []
    c2pow = {'S': 1, 'D': 2, 'T': 3}
    multlist = []
    
    result = re.findall('\\d+[SDT][\\*#]*', dartResult)
    for idx, res in enumerate(result):
        score = int(re.match('\\d+', res)[0])
        scorelist.append(score)
        
        if 'S' in res:
        	powlist.append(1)
        elif 'D' in res:
            powlist.append(2)
        elif 'T' in res:
            powlist.append(3)
        
        multlist.append(1)
        
        if '*' in res:
            multlist[-1] *= 2
            if idx != 0:
                multlist[-2] *= 2
        if '#' in res:
            multlist[-1] *= (-1)
                
    answer = 0
    for score, pow, mult in zip(scorelist, powlist, multlist):
        answer += score**pow * mult
        
    return answer

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges