소스 코드

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. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

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

 

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