[프로그래머스 | 파이썬] 다트 게임

devheyrin·2022년 6월 13일
0

codingtest

목록 보기
56/65

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/17682

코드

def solution(dartResult):
    scores = []
    bonuses = {"S" : 1, "D": 2, "T": 3}
    i = 0
    while i < len(dartResult):
        score = int(dartResult[i])
        if dartResult[i+1] == '0':
            score = 10
            i += 1
        bonus = bonuses[dartResult[i+1]]
        option = 1
        scores.append([score, bonus, option])

        i += 2
        if i >= len(dartResult):
            break
        if dartResult[i] == '*':
            if len(scores) == 3:
                scores[2][2] *= 2
                scores[1][2] *= 2
            elif len(scores) == 2:
                scores[1][2] *= 2 
                scores[0][2] *= 2
            else:
                scores[0][2] *= 2
            i += 1
        elif dartResult[i] == '#':
            scores[-1][2] = -1
            i += 1

    answer = 0

    for score, bonus, option in scores:
        answer += score**bonus*option

    return answer

풀이 설명

문자열을 하나씩 잘라보면서 확인하고 점수 계산에 필요한 정보들을 배열에 담아 저장해주었다.
배열이 완성된 다음 반복문을 돌면서 점수 총합계를 냈다.
문자열을 자를 때, 점수가 10점인 경우 점수를 갱신하고 인덱스를 한 칸 이동해주어야 한다는 것에 주의해야 한다.

profile
개발자 헤이린

0개의 댓글