728x90
https://programmers.co.kr/learn/courses/30/lessons/17682#
코딩테스트 연습 - [1차] 다트 게임
programmers.co.kr
def solution(dartResult):
answer = 0
dartR = list(dartResult)
tmp = []
for i in dartR:
if i == "S":
continue
elif i == "D":
tmp[-1] = tmp[-1]**2
elif i == "T":
tmp[-1] = tmp[-1]**3
elif i == "#":
tmp[-1] = tmp[-1]*(-1)
elif i == "*":
if len(tmp)>1:
tmp[-2], tmp[-1] = tmp[-2]*2, tmp[-1]*2
else:
tmp[-1] = tmp[-1]*2
else:
tmp.append(int(i))
# 숫자가 10인 경우 예외 처리
if len(tmp)>1 and tmp[-1] == 0 and tmp[-2] == 1:
tmp[-2] = 10
del tmp[-1]
return sum(tmp)
※ 주의
이 문제에서 주의점은 숫자가 10인 경우이다.
- list(dartResult)로 문자열이 하나하나 나눠지므로, 숫자가 10인 경우 예외 처리가 필요하다
- len(tmp)로 0이 맨 앞에 나올 때, 예외 처리 필요하다, (테스트 케이스 5,8)
'Python > CoTe' 카테고리의 다른 글
[programmers] 전화번호 목록 (0) | 2022.03.06 |
---|---|
[programmers] 기능 개발 (0) | 2022.03.04 |
[programmers] 키패드 누르기 (0) | 2022.03.03 |
[programmers] 3진법 뒤집기 (0) | 2022.03.03 |
[programmers] 신고 결과 받기 (0) | 2022.02.27 |