Skip to content

Commit fa52c03

Browse files
Add files via upload
1 parent f1a3d93 commit fa52c03

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed

LEVEL2/Day3/DartGame.py

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
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

Comments
 (0)