https://programmers.co.kr/learn/courses/30/lessons/17682
- 숫자가 들어오면 임시변수 temp에 숫자를 저장
- S, D, T가 들어오면 temp에 연산 후 score 리스트에 append
- *, #가 들어오면 score 리스트의 요소에 직접 연산
- sum 함수를 이용해 score 리스트의 합 계산
def solution(dartResult):
score = []
for i in dartResult:
if i.isdigit():
temp = int(i)
elif i == 'S':
score.append(temp)
elif i == 'D':
score.append(temp ** 2)
elif i == 'T':
score.append(temp ** 3)
elif i == '*':
if len(score) > 1:
score[-2] *= 2
score[-1] *= 2
else:
score[-1] *= 2
elif i == '#':
score[-1] *= (-1)
print(score)
return sum(score)
0~9점까지는 문제 없이 출력되지만, 10점일 경우 i의 값이 10이 아닌 1과 0으로 반복문이 실행.
-> 10을 replace 함수를 이용하여 A로 치환 후 연산
def solution(dartResult):
score = []
dartResult = dartResult.replace('10', 'A')
for i in dartResult:
if i.isdigit():
temp = int(i)
elif i == 'A':
temp = 10
elif i == 'S':
score.append(temp)
elif i == 'D':
score.append(temp ** 2)
elif i == 'T':
score.append(temp ** 3)
elif i == '*':
if len(score) > 1:
score[-2] *= 2
score[-1] *= 2
else:
score[-1] *= 2
elif i == '#':
score[-1] *= (-1)
return sum(score)
def solution(dartResult):
score = []
dartResult = dartResult.replace('10', 'A')
dart = {'S': 1, 'D': 2, 'T': 3}
option = {'*': 2, '#': -1}
for i in dartResult:
if i.isdigit() or i == 'A':
temp = 10 if i == 'A' else int(i)
elif i in dart:
score.append(temp ** dart[i])
elif i in option:
if len(score) > 1 and option[i] == '*':
score[-2] *= option[i]
score[-1] *= option[i]
else:
score[-1] *= option[i]
return sum(score)