잘 정리해보자

2018 카카오 블라인드 - 다트 본문

알고리즘/프로그래머스

2018 카카오 블라인드 - 다트

토마토오이 2021. 4. 13. 15:41

case 1.

import re

def solution(dartResult):
    answer = 0    
    bonus = ['S','D','T']; calcArr = []  
    dart = re.findall('\d+[A-Z]\W?',dartResult)    
    
    for i in range(len(dart)) :
        num = re.search('\d+',dart[i]).group()
        alph = re.search('\D',dart[i]).group()  
        wild = re.search('\W',dart[i])
        calcArr.append(int(num) ** (bonus.index(alph)+1))
        
        if bool(wild) :
            g = wild.group()          
            if g == '*' :
                if i == 0 : 
                    calcArr[i] *= 2
                else : 
                    calcArr[i-1] *= 2
                    calcArr[i] *= 2
            elif g == '#' :
                calcArr[i] *= -1

    answer = sum(calcArr)
    return answer

 

case 2.

import re

aa = {'S' :'**1','D' :'**2','T':'**3','#':'*-1'}

def solution(dartResult):
    answer = ''
    for i in re.sub('([SDT][#*]?)','\g<1> ',dartResult).split():
        if i[-1] == '*':
            i += '2'
            if answer:
                answer = answer[:-1] + '*2+'
        for j in aa.keys():
            i = i.replace(j,aa[j])
        answer += i + '+'
    return eval(answer[:-1])

 

solution('1S*2T*3S')
//실행결과 : 23

 

 

문제 : programmers.co.kr/learn/courses/30/lessons/17682

Comments