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)
카카오는 문자열 처리를 자주 내기 때문에 문자열 처리에 대한 부분을 많이 풀어야 필요성을 느꼈다.