알고리즘/프로그래머스
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