반응형
https://school.programmers.co.kr/learn/courses/30/lessons/17682
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
스택을 사용하여 구현하는게 핵심
def solution(dartResult):
squares = {
"S": 1,
"D": 2,
"T": 3,
}
scores = []
temp = ""
for char in dartResult:
if char.isdigit():
temp += char # 문자가 숫자일 때 더해서 임시 저장
elif char.isalpha():
# 문자가 S, D, T 일때 임시 저장한 변수를 정수화 해서 제곱하고 삽입
scores.append(pow(int(temp), squares[char]))
temp = "" # 초기화
elif char == "*": # 현재 점수와 바로 이전 점수에 스타상 적용
if len(scores) > 1:
scores[-2] *= 2
scores[-1] *= 2
elif char == "#": # 현재 점수에 아차상 적용
scores[-1] *= -1
# 모두 더한 점수를 출력
answer = sum(scores)
return answer