[Programmers/프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차 코딩테스트]
- [Lv. 1] 비밀 지도
- [Lv. 1] 다트 게임
- [Lv. 2] 캐시
- [Lv. 3] 셔틀버스
- [Lv. 2] 뉴스 클러스터링
- [Lv. 2] 프렌즈4블록
- [Lv. 3] 추석 트래픽
def solution(dartResult):
score = '' # 문자열 임시점수
scores = [] # 각 3번의 기회별 점수계산
for elem in dartResult:
if elem.isdigit(): # 숫자이면
score += elem # 문자열에 추가
elif elem == 'S': # Single
scores.append(int(score) ** 1) # 1제곱
score = '' # 임시점수 초기화
elif elem == 'D': # Double
scores.append(int(score) ** 2) # 2제곱
score = '' # 임시점수 초기화
elif elem == 'T': # Triple
scores.append(int(score) ** 3) # 3제곱
score = '' # 임시점수 초기화
elif elem == '*': # x2
if len(scores) == 1: # 첫 번째 기회에서 스타상이 나왔을 때
scores[-1] = scores[-1] * 2 # 첫 번째 점수만 x2
else: # 첫 번째 기회이후 스타상이 나왔을 때
scores[-1] = scores[-1] * 2 # 해당점수 x2
scores[-2] = scores[-2] * 2 # 이전점수 x2
elif elem == '#': # x (-1)
scores[-1] = -scores[-1] # 해당점수 x (-1)
return sum(scores) # 최종점수합산