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

sg-moomin·2022년 4월 25일
0

알고리즘

목록 보기
2/2

오늘 포스팅 할 내용은 프로그래머스 문제 중 하나인 다트게임 문제를 풀어봤습니다. 


1. 문제 설명 


2. 문제 예시 


3. 문제 풀이 

내용을 잘 읽어보면 문제를 쉽게 풀 수 있습니다.

먼저 S, D, T는 제곱근을 이용해서 구해주면 됩니다.

스타상(*)과 아차상(#)은 중복이 될 수 있고 효과 중첩이 될 수 있다는 부분만 주의해주면 된다.

그리고 마지막으로 확인하면 되는 부분은 아차상(#)과 스타상(*)은 DartResult 맨 뒤에 나올 수 있다는 점  

마지막에 나올 수 있기 때문에 마지막에 종료 표시를 위한 값("K")을 넣어주면 조금 더 쉽게 풀 수 있습니다.

코드는 아래와 같습니다.

import math

def solution(dartResult):
    darts = []
    starsNum = []
    result = [0] * 3
    dartStr = ""
    chks = ""
    rDartResult = ""
    
    rDartResult = dartResult + "K"

    for i in range(len(rDartResult)):
        if rDartResult[i] == "S" or rDartResult[i] == "D" or rDartResult[i] == "T" or rDartResult[i] == "K":
            darts.append(dartStr + rDartResult[i])
            dartStr = ""
        else:
            dartStr += rDartResult[i]

    for i in range(len(darts)):
        chks = ""
        for j in darts[i]:
            if j == "S":
                result[i] = int(chks)
                result[i] = int(math.pow(result[i], 1))
            elif j == "D":
                result[i] = int(chks)
                result[i] = int(math.pow(result[i], 2))
            elif j == "T":
                result[i] = int(chks)
                result[i] = int(math.pow(result[i], 3))
            elif j == "#" or j == "*":
                if j == "#":
                    result[i-1] *= (-1)
                else:
                    result[i-1] *= 2
                    result[i-2] *= 2
            else:
                chks += j

    return sum(result)

우선 S, D, T, K로 구분을 해준다.

ex) 1S2D3T -> 1S, 2D, 3T

구분해준 뒤 S, D, T, #, *에 대한 조건들을 부여해주면 됩니다.


4. GitHub Code

Sg-moomin GitHub 다트 게임 코드!

위의 이미지 링크를 클릭하면 코드 확인이 가능합니다.

GitHub에도 동일하게 코드를 올려놨습니다. 

profile
backend 개발자를 꿈꾸는 직장인입니다.

0개의 댓글