본문 바로가기

ETC

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

반응형

프로그래머스로 코딩테스트 뽀개기

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

 

코딩테스트 연습 - [1차] 다트 게임

 

programmers.co.kr

갓이유가 광고한 게임이다.

문제 해결은 다음과 같다.

1. 숫자의 경우 스택에 넣는다.

2. 그 다음 나오는 싱글 더블 트리플을 제곱한다.

3.* 스타상인 경우, 스택의 맨 위를 2배하거나, 길이가 2 이상일 경우 그 이전 점수도 2배로 한다.

4. 아차는 직전 점수만 -1배 하기 때문에 스타 후 아차는 중첩이 안된다.

5. 아차 후 스타는 중첩될 수 있는데, 그냥 우직하게 하나씩 적용하면 된다.

 

 

def solution(dartResult):
    temp = 0
    point = {"S": 1, "D": 2, "T": 3}
    temp = ''
    stack = []
    for i, c in enumerate(dartResult):
        if c in point:
            stack.append(int(temp) ** point[c])
            temp = ''
        elif c == "#":
            stack[-1] = stack[-1] * -1
        elif c == "*":
            stack[-1] = stack[-1] * 2
            if len(stack) >= 2:
                stack[-2] = stack[-2] * 2
        else:
            temp += c
    return sum(stack)
반응형