[프로그래머스]-[1차] 다트 게임

이정연·2022년 11월 6일
0

CodingTest

목록 보기
89/165
post-thumbnail

설계

문자열 관련 문제이기에 처음에 스택을 떠올렸다.

살짝 난감했던 부분은 dartResult를 숫자/보너스/옵션으로 구분지을 때 두 자리 이상의 수를 저장하는 것이 어려웠다.

따라서 스택보다는 조건문과 반복문으로 문제 해결을 했다.

어차피 숫자 뒤에는 반드시 보너스가 오므로 보너스가 들어올 때까지 숫자를 문자열에 저장했다가 한 번에 정수형 자료로 변환해주었다.

코드

def solution(dartResult):
    num = ''
    bonus = {
        'S':1,'D':2,'T':3
    }
    score = []
    for i in range(len(dartResult)):
        if dartResult[i].isdigit():
            num += dartResult[i]
        if dartResult[i].isalpha():
            temp = int(num)**bonus[dartResult[i]]
            num = ''
            if 0<=i+1<len(dartResult):
                if dartResult[i+1] == '#':
                    temp *= -1
                    score.append(temp)
                elif dartResult[i+1] == '*':
                    if score:
                        score[-1] *= 2
                    temp *= 2
                    score.append(temp)
                else:
                    score.append(temp)
            else:
                 score.append(temp)   
    return sum(score)
profile
0x68656C6C6F21

0개의 댓글