[프로그래머스 Lv1] 다트게임(python)

이진규·2022년 1월 15일
1

프로그래머스(PYTHON)

목록 보기
17/64

문제

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

나의 코드 (답안참조)

"""
1. 아이디어
문자열 처리 문제인데 아이디어가 떠오르지 않아서 답안을 참조했다.
문자열 처리 자주 풀어봐야 겠다.

2. 시간복잡도
O(N)
"""

def solution(dartResult):
    
    answer = []
    
    dartResult = dartResult.replace("10", 'Q') 
    """ 10의 경우 문자열에서는 '1', '0' 따로 분리되기 때문에 
    임의의 한 단어(여기선 'Q')로 치환시켜준다."""
    
    score = {'S':1, 'D':2, 'T':3}
    
    for x in dartResult:
        
        if x in score:
            answer[-1] = answer[-1] ** score[x]
            
        elif x == '*':
            answer[-1] *= 2
            if len(answer) > 1: # 첫번째 원소가 아니라면
                answer[-2] *= 2
        elif x == '#':
            answer[-1] *= (-1)
            
        else:
            # 만약 치환시켜준 'Q' 즉, 10의 값이 들어오면 10으로 변경해준다.
            if x == 'Q': 
                x = 10
            answer.append(int(x))
            
    return sum(answer)
    

느낀점

카카오는 문자열 처리를 자주 내기 때문에 문자열 처리에 대한 부분을 많이 풀어야 필요성을 느꼈다.

profile
항상 궁금해하고 공부하고 기록하자.

0개의 댓글