22. 다트게임
코딩 테스트 연습 > 2018 KAKAO BLIND RECRUITMENT > 다트게임
https://programmers.co.kr/learn/courses/30/lessons/17682
Input value =
ㆍ dartResult(str)
1-1. 전의 점수에도 영향을 미치는 '*'을 고려하기 위해 임시 저장 부분이 필요
return sum
ㆍ 점수|보너스|옵션 으로 이루어진 문자열 3세트
점수는 0에서 10 사이의 정수입니다.
보너스는 S,D,T 중 하나입니다.
옵션은 * 이나 # 중 하나이며, 없을 수도 있습니다.
def solution(dartResult):
number = [str(i) for i in range(11)]
bonus = 'SDT'
event = '*#'
result = []
for i in dartResult:
if i in number:
if result == [] or result[-1] not in number:
result.append(i)
else:
result[-1]+=i
elif i in bonus:
result[-1]=int(result[-1])**(bonus.index(i)+1)
elif i in event:
if i == '*':
if len(result) >= 2:
result[-2]=int(result[-2])*2
result[-1]=int(result[-1])*2
else:
result[-1]=int(result[-1])*-1
return sum(result)
# Code test
dartResult = '1S*2T*3S'
solution(dartResult)
다른 사람 풀이로 정규표현식을 이용하여 푸는 방법이 있었으나, 아직 실력이 미숙하여 제대로 이해하지 못했다...
한달 전에 풀었을 때 보다 4줄 가량 코드가 줄었으나.. 아직 더 줄일 수 있을꺼라 생각된다..! 더 노력해야지