https://school.programmers.co.kr/learn/courses/30/lessons/17682
def solution(dartResult):
answer = 0
result = []
each_dart = []
for i in dartResult:
if each_dart==[]:
each_dart.append(i)
else:
if each_dart[-1].isdigit() and i.isdigit():
each_dart[-1] = each_dart[-1] + i
elif not i.isdigit():
each_dart.append(i)
else:
result.append(each_dart)
each_dart = [i]
result.append(each_dart)
score = []
for j in result:
n = 0
for t in j:
if t.isdigit():
n += int(t)
elif t == 'S':
n = n ** 1
elif t == 'D':
n = n ** 2
elif t == 'T':
n = n ** 3
elif t == '*':
if score == []:
n = n * 2
else:
score[-1] = score[-1] * 2
n = n * 2
elif t == '#':
n = n * (-1)
score.append(n)
answer = sum(score)
return answer
- 또 다른 풀이
# 다른 풀이
# 정규 표현식으로 푼 풀이가 너무 깔끔했음
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
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Python] 푸드 파이트 (0) | 2023.01.09 |
---|---|
[Python] 귤 고르기 (0) | 2023.01.08 |
[Python] k진수에서 소수 개수 구하기 (0) | 2023.01.06 |
[Python] 야근 지수 (0) | 2023.01.05 |
[Python] 크기가 작은 부분 문자열 (0) | 2023.01.04 |