1+ # 39. 다트 게임
2+
3+ # 내 풀이 X ... 뭔가 복잡해
4+ def solution (dartResult ):
5+ answer = 0
6+
7+ bonus = {'S' : 1 , 'D' : 2 , 'T' : 3 }
8+ option = {'*' : 2 , '#' : - 1 }
9+
10+ Third_period = [0 , 0 , 0 ]
11+ flag = - 1
12+
13+ for idx , dart in enumerate (dartResult ):
14+ if dart .isdigit ():
15+ flag += 1
16+ if dart == '0' :
17+ continue
18+ elif dartResult [idx + 1 ].isdigit (): # 10 이상일 때
19+ Third_period [flag ] = int (dart ) * 10
20+ flag -= 1
21+ else :
22+ Third_period [flag ] = int (dart )
23+ elif dart in 'SDT' : # SDT
24+ Third_period [flag ] **= bonus [dart ]
25+ else :
26+ if dart == '*' :
27+ Third_period [flag - 1 ] *= 2
28+
29+ Third_period [flag ] *= option [dart ]
30+
31+ answer = sum (Third_period )
32+ return answer
33+
34+ dartResult_1 = '1S2D*3T'
35+ dartResult_2 = '1D2S#10S'
36+ dartResult_3 = '1D2S0T'
37+ dartResult_4 = '1S*2T*3S'
38+ dartResult_5 = '1D#2S*3S'
39+ dartResult_6 = '1T2D3D#'
40+ dartResult_7 = '1D2S3T*'
41+
42+ print (solution (dartResult_1 ))
43+ print (solution (dartResult_2 ))
44+ print (solution (dartResult_3 ))
45+ print (solution (dartResult_4 ))
46+ print (solution (dartResult_5 ))
47+ print (solution (dartResult_6 ))
48+ print (solution (dartResult_7 ))
49+
50+ import re
51+
52+ def solution_best (dartResult ):
53+ answer = 0
54+
55+ bonus = {'S' : 1 , 'D' : 2 , 'T' : 3 }
56+ option = {'' : 1 , '*' : 2 , '#' : - 1 }
57+
58+ p = re .compile ('(\d+)([SDT])([*#]?)' )
59+ dart = p .findall (dartResult )
60+ for i in range (len (dart )):
61+ if dart [i ][2 ] == '*' and i > 0 :
62+ dart [i - 1 ] *= 2
63+ dart [i ] = int (dart [i ][0 ]) ** bonus [dart [i ][1 ]] * option [dart [i ][2 ]]
64+
65+ answer = sum (dart )
66+ return answer
67+
68+ print (solution_best (dartResult_1 ))
69+ print (solution_best (dartResult_2 ))
70+ print (solution_best (dartResult_3 ))
71+ print (solution_best (dartResult_4 ))
72+ print (solution_best (dartResult_5 ))
73+ print (solution_best (dartResult_6 ))
74+ print (solution_best (dartResult_7 ))
0 commit comments