반응형
https://programmers.co.kr/learn/courses/30/lessons/17682
갓이유가 광고한 게임이다.
문제 해결은 다음과 같다.
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)
반응형
'ETC' 카테고리의 다른 글
[LV2] 프로그래머스 문제풀이 섬 연결하기 (0) | 2020.10.09 |
---|---|
[핵심 알고리즘 정리] 퀵소트 (0) | 2020.10.04 |
[LV1] 프로그래머스 서울에서 김서방 찾기 python (0) | 2020.10.04 |
[LV1] 프로그래머스 문자열 다루기 기본 python (0) | 2020.10.04 |
[LV1] 프로그래머스 문자열 내림차순으로 배치하기 python (0) | 2020.10.04 |