[ 문제 ]
[출제 의도]
- 문자열 처리
[ 문제 풀이 ]
보너스와 옵션에 맞춰 누적된 숫자에 계산해주면 됩니다.
다만, 이를 문자열을 한 글자씩 처리할 경우 신경써서 처리해야 할 부분이 생깁니다. 두 자리 수입니다.
두 자리 수는 10밖에 없습니다. 따라서 10을 미리 한 자리 문자열로 치환하면 계산을 쉽게 처리할 수 있습니다.
[ 정답 코드 ]
# S: 1제곱, D: 2제곱, T: 3제곱
# *: 해당 점수와 바로 전에 얻은 점수를 각 2배
# #: 해당 점수를 마이너스
def solution(dartResult):
li = []
i = -1
dartResult = dartResult.replace("10", "K")
for n in dartResult:
if n == "S":
continue
elif n == "D":
li[i] **= 2
elif n == "T":
li[i] **= 3
elif n == "*":
# 예외 처리
if i == 0:
li[i] *= 2
else:
li[i] *= 2
li[i - 1] *= 2
elif n == "#":
li[i] *= -1
else:
# 예외 처리
if n == "K":
n = 10
li.append(int(n))
i += 1
return sum(li)
print(solution("1D2S#10S"))
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][2018 KAKAO BLIND RECRUITMENT][Python] 방금그곡 (0) | 2022.05.16 |
---|---|
[프로그래머스][2018 KAKAO BLIND RECRUITMENT][Python] 비밀지도 (0) | 2022.05.03 |
[프로그래머스][2019 KAKAO BLIND RECRUITMENT][Python] 오픈채팅방 (0) | 2022.03.31 |
[프로그래머스][2019 KAKAO BLIND RECRUITMENT][Python] 매칭 점수 (0) | 2022.03.28 |
[프로그래머스][2020 KAKAO BLIND RECRUITMENT][Python] 괄호 변환 (0) | 2022.03.23 |