소스 코드

def solution(dartResult):
# 점수
score = [0,0,0]
# 점수 인덱스
idx = 0
# 방문 확인
check = [0 for _ in range(len(dartResult))]
# 기본 점수 확인
for q in range(len(dartResult)):
if check[q] == 0:
# '0' <= dartResult[q] <= '9' 이면
if 48 <= ord(dartResult[q]) <= 57:
check[q] = 1
# 10인 경우
if 48 <= ord(dartResult[q+1]) <= 57:
check[q+1] = 1
if dartResult[q+2] == 'S':
score[idx] = 10
elif dartResult[q+2] == 'D':
score[idx] = 100
else:
score[idx] = 1000
# 10이 아닌 경우
else:
if dartResult[q + 1] == 'S':
score[idx] = int(dartResult[q])
elif dartResult[q + 1] == 'D':
score[idx] = int(dartResult[q]) ** 2
else:
score[idx] = int(dartResult[q]) ** 3
idx += 1
# 보너스 계산하기
for w in range(len(dartResult)):
if dartResult[w] == '*':
if w == 2:
score[0] *= 2
elif w == 4 or w == 5:
score[0] *= 2
score[1] *= 2
else:
score[1] *= 2
score[2] *= 2
elif dartResult[w] == '#':
if w == 2:
score[0] *= -1
elif w == 4 or w == 5:
score[1] *= -1
else:
score[2] *= -1
answer = sum(score)
return answer

 


해결 방법

1. 문제에 나와있는 조건을 적용하고, 순서대로 해결


느낀 점

조금 더 깔끔한 코드 or 깔끔한 방식으로 문제를 해결해보고 싶다...

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.