나의 답 :
def solution(dartResult):
s=[]
score=[]
s+=dartResult[0]
answer = 0
for i in dartResult[1:]:
if i=='0' and s[-1]=='1':
s[-1] = '10'
continue
if i.isdigit():
if s[-1].isalpha():
s.append('-')
s.append(i)
elif i=='S' or i=='D' or i=='T':
s.append(i)
elif i=='*' or i=='#':
s.append(i)
print(s)
for i in range(len(s)):
print(score)
if s[i].isdigit():
score.append(int(s[i]))
elif s[i] == 'S':
score.append(0)
elif s[i] == 'D':
score.append(0)
score[i-1] = score[i-1]**2
elif s[i] == 'T':
score.append(0)
score[i-1] = score[i-1]**3
elif s[i] == '*':
score.append(0)
score[i-2] *= 2
if i>=5:
score[i-5] *= 2
elif s[i] == '#':
score.append(0)
score[i-2] *= (-1)
elif s[i] == '-':
score.append(0)
print(score)
return sum(score)
다른 사람의 답 :
import re
def solution(dartResult):
bonus = {'S' : 1, 'D' : 2, 'T' : 3}
option = {'' : 1, '*' : 2, '#' : -1}
p = re.compile('(\d+)([SDT])([*#]?)')
dart = p.findall(dartResult)
for i in range(len(dart)):
if dart[i][2] == '*' and i > 0:
dart[i-1] *= 2
dart[i] = int(dart[i][0]) ** bonus[dart[i][1]] * option[dart[i][2]]
answer = sum(dart)
return answer
다른 사람의 답은 정규표현식을 사용했다.
'공부 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 멀쩡한 사각형(파이썬) (0) | 2021.01.19 |
---|---|
[프로그래머스] 프린터(스택/큐) (0) | 2021.01.15 |
[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 실패율 (0) | 2021.01.12 |
[프로그래머스] 2018 KAKAO BLIND RECRUITMENT 비밀지도 (0) | 2021.01.11 |
[프로그래머스] 예산, 직사각형 별찍기 (0) | 2021.01.11 |