반응형
https://programmers.co.kr/learn/courses/30/lessons/17682
def solution(dartResult):
bonus = {'S':1, 'D':2, 'T':3}
answer = []
dartResult = dartResult.replace('10','k') # 10을 k로 바꿈
dartResult = ['10' if i == 'k' else i for i in dartResult] # 리스트로 저장
# 점수 합계 계산
i = -1
for d in dartResult:
if d in 'SDT' :
answer[i] = answer[i] ** bonus[d]
elif d == '*':
answer[i] = answer[i] * 2
if i != 0 :
answer[i - 1] = answer[i - 1] * 2
elif d == '#':
answer[i] = answer[i] * (-1)
else:
answer.append(int(d))
i += 1
return sum(answer)
점수가 1이상 10이하이므로 점수가 10일 경우를 처리해주기 위해서 dartResult에 10이 있는 경우 k로 대체해줍니다. 요소 하나하나를 리스트로 저장하는데 k는 10으로 바꿔서 저장해줍니다. 그 다음 for문을 돌면서 각 케이스마다 처리를 해줍니다. d가 숫자이면 else의 경우에 들어가는데 answer에 값을 저장합니다. d가 SDT 중 하나이면 이전에 저장해놨던 숫자를 가져와 점수를 계산해서 저장합니다. d가 #인 경우에는 해당 점수만 차감하면 되므로 현재 점수를 가져와 곱하기 -1하여 저장합니다. d가 *인 경우에는 해당 점수를 2배 해서 저장합니다. 첫번째 기회에서 *일 경우에는 해당 점수만 2배하면 끝이지만 두번째 기회부터는 이전 점수도 2배해줘야 하므로 조건을 하나 더 추가하여 이전 점수를 2배하여 저장합니다. 마지막으로 리턴할 때 answer의 모든 요소를 더한 값을 구해서 리턴해줍니다.
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Python] 프린터 - Level2 (0) | 2021.05.22 |
---|---|
[프로그래머스/Python] 기능개발 - Level2 (0) | 2021.05.21 |
[프로그래머스/Python] 비밀지도 (0) | 2021.05.18 |
[프로그래머스/Python] 카펫 - Level2 (0) | 2021.05.18 |
[프로그래머스/Python] 소수 찾기 - Level2 (0) | 2021.05.17 |