카카오톡에 뜬 네 번째 별! 심심할 땐? 카카오톡 게임별~
카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다.
갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다.
0~10의 정수와 문자 S, D, T, *, #로 구성된 문자열이 입력될 시 총점수를 반환하는 함수를 작성하라.
"점수|보너스|[옵션]"으로 이루어진 문자열 3세트.
예) 1S2D*3T
3번의 기회에서 얻은 점수 합계에 해당하는 정수값을 출력한다.
예) 37
def solution(dartResult):
bonus = {'S':1,'D':2,'T':3}
score = []
tmp=""
for i in dartResult:
if i in ['S','D','T']:
score.append(int(tmp)**bonus[i])
tmp=""
elif i =='#':
score[-1] = score[-1]*-1
elif i =='*':
score[-1] = score[-1]*2
if len(score)>1:
score[-2] = score[-2]*2
else:
tmp+=i
return sum(score)
다른 풀이에서 정규식을 이용해 각 점수를 나누고 문제를 풀었다
p = re.compile('(\d+)([SDT])([*#]?)')
dart = p.findall(dartResult)
정규식을 사용하면
위와 같이 각 점수가 처리하기 쉽게 나눠짐을 알 수 있다