-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path[1차] 다트 게임.py
93 lines (81 loc) · 2.59 KB
/
[1차] 다트 게임.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
'''
import re
def solution(dartResult):
arr = []
answer = 0
p = re.compile("(\d+)([a-zA-Z])(\*|#)?")
scores = p.findall(dartResult)
for score in scores:
if score[1] == 'S':
arr.append(int(score[0])**1)
if score[1] == 'D':
arr.append(int(score[0])**2)
if score[1] == 'T':
arr.append(int(score[0])**3)
for score in scores:
if score[2] == '#':
arr[scores.index(score)] = arr[scores.index(score)]*-1
if score[2] == '*':
arr[scores.index(score)] = arr[scores.index(score)]*2
if scores.index(score) != 0:
arr[scores.index(score)-1] = arr[scores.index(score)-1]*2
return sum(arr)
'''
# '실전에서 정규식을 사용할수 있을까?'하는 마음에 자료에 의존하지 않고 스스로 풀어보았다.
# 풀다보니 그냥 정규식을 공부하는 것이 나은것 같기도 하고 그렇다.
# 2020.02.26
"""
def solution(dartResult):
dartResult = list(dartResult)
stack = []
for i in range(0, len(dartResult)-1):
if dartResult[i] == '1' and dartResult[i+1] == '0':
stack.append('10')
continue
if stack != []:
if stack[-1] == '10' and dartResult[i] == '0':
continue
stack.append(dartResult[i])
stack.append(dartResult[-1])
cnt = []
for num in stack:
if num.isnumeric():
cnt.append(int(num))
if num.isalpha():
if num == 'D':
cnt[-1] = cnt[-1]**2
if num == 'T':
cnt[-1] = cnt[-1]**3
if num == '*':
if len(cnt) == 1:
cnt[-1] = cnt[-1]*2
else:
cnt[-1] = cnt[-1]*2
cnt[-2] = cnt[-2]*2
if num == '#':
cnt[-1] = cnt[-1]*(-1)
return sum(cnt)
"""
#2022.11.12
import re
def _calc(string):
answer = int(re.match('\d+', string).group())
if 'S' in string:
return answer
if 'D' in string:
return answer**2
if 'T' in string:
return answer**3
def solution(dartResult):
result_list = re.findall('\d\d?(?:S|D|T)(?:[#*]?)',dartResult)
answer = [_calc(val) for val in result_list]
for i in range(len(result_list)):
if '#' in result_list[i]:
answer[i] = answer[i] * -1
if '*' in result_list[i]:
if i == 0:
answer[i] = answer[i] * 2
else:
answer[i] = answer[i] * 2
answer[i-1] = answer[i-1] * 2
return sum(answer)