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

Eunjin Kim·2022년 4월 8일
0

코딩테스트

목록 보기
2/8

Level 1 문제

다트 게임

카카오톡에 뜬 네 번째 별! 심심할 땐? 카카오톡 게임별~

# 스타상(*) 당첨 시 해당 점수와 바로 전에 얻은 점수를 각 2배로 만든다. 
# 아차상(#) 당첨 시 해당 점수는 마이너스된다.

def solution(dartResult):
    answer = 0
    dartResult = dartResult.replace("10", 'A')
    square = {'S' : 1, 'D' : 2, 'T' : 3}
    stack = []
    
    for d in dartResult:
        if d.isdigit() or d == 'A':
            stack.append(10 if d == 'A' else int(d))
        elif d in square:
            stack[-1] = pow(stack[-1], square[d])
        elif d == '*':
            if len(stack) >= 2:
                stack[-1] *= 2
                stack[-2] *= 2
            else:
                stack[-1] *= 2
        elif d == '#':
            stack[-1] *= -1
            
    
    # print(stack)
    return sum(stack)

keypoint

  • 10이 예외적인 상황이기 때문에 문자열로 바꿀 수 있다.
		dartResult = dartResult.replace("10", "A")
  • 정규표현식을 사용하면 훨씬 간단하게 표현 가능🧐
  • ' * ' 일 때에 stack에 데이터가 하나만 있을 수도 있다.(조건 필요함)
profile
ALL IS WELL🌻

0개의 댓글