입력 형식
"점수|보너스|[옵션]"으로 이루어진 문자열 3세트.
예) 1S2D*3T
점수는 0에서 10 사이의 정수이다.
보너스는 S, D, T 중 하나이다.
옵선은 *이나 # 중 하나이며, 없을 수도 있다.
출력 형식
3번의 기회에서 얻은 점수 합계에 해당하는 정수값을 출력한다.
예) 37
숫자 10 때문에 골이 조금 아팠다. 10이 있다는 것을 모르고 ( 두자리 수 ) dartResult 문자열 하나씩 읽으면서 했었는데 10 때문에 숫자만 따로 끄집어 내고 알파벳이 나올때만 count 를 세줘서 "*"을 계산하기 위해 전작업을 해주었다.
else 부분에서 하나씩 -1 해준 이유는 앞에서 알파벳이 나왔을 때 다음 기회로 넘어가게 작성했기 때문에(count++) 알파벳 다음에 나오는 "*" 이나 "#" 은 하나씩 줄여서 봐주어야 한다.
import math
import re
def solution(dartResult):
answer = 0
temp = re.findall("\d+", dartResult)
for i in range(3):
temp[i] = int(temp[i])
#‘\d+’ : 숫자를 묶어서 list 로 반환
count = 0
for i in dartResult:
if i.isalpha():
if i == "S":
answer += temp[count]
elif i == "D":
temp[count] = math.pow(temp[count],2)
answer += temp[count]
elif i == "T":
temp[count] = temp[count] ** 3
answer += temp[count]
count += 1
else :
if i =="*":
if count >1:
answer -= temp[count-1] + temp[count-2]
temp[count-1] = temp[count-1] *2
temp[count-2] = temp[count-2] *2
answer += temp[count-1] + temp[count-2]
else:
answer -= temp[count-1]
temp[count-1] = temp[count-1] *2
answer += temp[count-1]
elif i =="#":
temp[count-1] = temp[count-1] *(-1)
answer += temp[count-1] *2
return answer