244. 2018 KAKAO BLIND RECRUITMENT 1차 다트 게임
1) 어떤 전략(알고리즘)으로 해결?
2) 코딩 설명
<내 풀이>
def solution(dartResult):
dartResult = list(dartResult)
startidx = 0
divide_three = []
for d in range(len(dartResult)) :
if (dartResult[d].isdigit() and not ((d>0 and dartResult[d-1]=='1') and dartResult[d]=='0')) :
endidx = d-1
if endidx > 0 and len(dartResult[startidx:endidx+1])>1:
divide_three.append(dartResult[startidx:endidx+1])
startidx = d
elif d==len(dartResult)-1 :
divide_three.append(dartResult[endidx+1:len(dartResult)])
total = []
bonus = False
for dt in range(len(divide_three)) :
if divide_three[dt][0]=='1' and divide_three[dt][1]=='0' :
get = 10
sdt = divide_three[dt][2]
if len(divide_three)>3 :
bonus = divide_three[3]
else :
get = int(divide_three[dt][0])
sdt = divide_three[dt][1]
if len(divide_three[dt])>2 :
bonus = divide_three[dt][2]
if sdt == 'S' :
get**=1
elif sdt == 'D' :
get**=2
else :
get**=3
if bonus!=False :
if bonus == "*" :
if dt>0 :
total[dt-1]*=2
get*=2
else :
get*=2
else :
get*=-1
total.append(get)
bonus = False
answer = sum(total)
return answer
print(solution("1D2S3T*"))
<반성 점>
- 예외처리 해줄 게 많아서 피곤했다. 그러나 그럴수록 조건 잘 정리해서 한번에 딱 했음 되는건데 졸면서 해가지고 쓸데없이 오래걸렸다. 설계를 잘하고 임하자
<배운 점>