잘 정리해보자
2018 카카오 블라인드 - 다트 본문
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
'알고리즘 > 프로그래머스' 카테고리의 다른 글
2018 카카오 블라인드 - 캐시 (0) | 2021.04.14 |
---|---|
2018 카카오 블라인드 - 비밀지도 (0) | 2021.04.14 |
2018 카카오 블라인드 - 프렌즈4블록 (0) | 2021.04.13 |
Hash level1 - 완주하지 못한 선수 (0) | 2021.04.12 |
정렬 level 1 - K번째 수 (0) | 2021.04.12 |
Comments