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+ chances = [0 , 0 , 0 ]
11+ number_cnt = - 1
12+ for idx , dart in enumerate (dartResult ):
13+ if dart .isdigit ():
14+ number_cnt += 1
15+ if dart == '0' :
16+ continue
17+ # 10일 때
18+ elif dartResult [idx + 1 ].isdigit ():
19+ chances [number_cnt ] = int (dart ) * 10
20+ number_cnt -= 1
21+ else :
22+ chances [number_cnt ] = int (dart )
23+ elif dart in 'SDT' :
24+ chances [number_cnt ] **= bonus [dart ]
25+ else :
26+ if dart == '*' :
27+ chances [number_cnt - 1 ] *= 2
28+ else :
29+ chances [number_cnt - 1 ] *= - 1
30+
31+ answer = sum (chances )
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+ def solution_other (dartResult ):
51+ answer = []
52+
53+ dartResult = dartResult .replace ('10' , 'k' )
54+ point = ['10' if i == 'k' else i for i in dartResult ]
55+
56+ i = - 1
57+ sdt = ['S' , 'D' , 'T' ]
58+ for j in point :
59+ if j in sdt :
60+ answer [i ] = answer [i ] ** (sdt .index (j ) + 1 )
61+ elif j == '*' :
62+ answer [i ] = answer [i ] * 2
63+ if i != 0 :
64+ answer [i - 1 ] = answer [i - 1 ] * 2
65+ elif j == '#' :
66+ answer [i ] = answer [i ] * (- 1 )
67+ else :
68+ answer .append (int (j ))
69+ i += 1
70+
71+ return sum (answer )
72+
73+ # print(solution_other(dartResult_1))
74+ # print(solution_other(dartResult_2))
75+ # print(solution_other(dartResult_3))
76+ # print(solution_other(dartResult_4))
77+ # print(solution_other(dartResult_5))
78+ # print(solution_other(dartResult_6))
79+ # print(solution_other(dartResult_7))
80+
81+ import re
82+
83+ def solution_best (dartResult ):
84+ answer = 0
85+
86+ bonus = {'S' : 1 , 'D' : 2 , 'T' : 3 }
87+ option = {'' : 1 , '*' : 2 , '#' : - 1 }
88+
89+ p = re .compile ('(\d+)([SDT])([*#]?)' )
90+ dart = p .findall (dartResult )
91+ print (dart )
92+ for i in range (len (dart )):
93+ if dart [i ][2 ] == '*' and i > 0 :
94+ dart [i - 1 ] *= 2
95+ dart [i ] = int (dart [i ][0 ]) ** bonus [dart [i ][1 ]] * option [dart [i ][2 ]]
96+
97+ answer = sum (dart )
98+ return answer
99+
100+ # print(solution_best(dartResult_1))
101+ # print(solution_best(dartResult_2))
102+ # print(solution_best(dartResult_3))
103+ # print(solution_best(dartResult_4))
104+ # print(solution_best(dartResult_5))
105+ # print(solution_best(dartResult_6))
106+ # print(solution_best(dartResult_7))
0 commit comments