✏️ 문제
문제 파악
제일 처음 생각했던 게 점수는 0에서 10 사이의 정수로 한 칸을 차지할 수도 두 칸을 차지할 수도 있다.
그래서 점수 길이를 단정할 수 없으니 점수 하나당 S, D, T 하나가 나오게 되니까 S, D, T를 기준으로 앞에 오는 게 숫자라고 단정 짓는 게 맞다고 생각했다!
(스타상 * 이나 아차상 # 도 점수 하나당 있을 수도 있고 없을 수도 있으니까 기준으로 삼을 수 없다.)
그리고 점수에 보너스까지 처리한 값을 바로 정답 변수에 넣을 수 없는 게 뒤에 스타상이 온다면 이전 점수에 2배를 해줘야 하기 때문이다.
그래서 점수는 배열에 각각 처리한 값을 넣어서 스타상이 나왔을 때 처리할 수 있게 해주어야 한다.
참고로 배열의 뒷 인덱스부터 요소에 접근할 때 다음과 같이 접근할 수 있다.
score[-1] *= 2 # 마지막 요소를 2배로
score[-2] *= 2 # 뒤에서 두 번째 요소를 2배로
코드
def solution(dartResult):
answer = 0
score = []
s = ''
for d in dartResult:
# 문자라면
if (d == 'S'):
score.append(int(s) ** 1)
s = ''
elif (d == 'D'):
score.append(int(s) ** 2)
s = ''
elif (d == 'T'):
score.append(int(s) ** 3)
s = ''
# 스타상 또는 아차상이라면
elif (d == '*'):
if (len(score) == 1):
score[0] *= 2
else:
score[-1] *= 2
score[-2] *= 2
elif (d == '#'):
score[-1] *= -1
# 숫자라면
else:
s += d
answer = sum(score)
return answer
'PS > 프로그래머스' 카테고리의 다른 글
[Python] 실패율 (0) | 2024.10.27 |
---|---|
[Python] 9번 / 지폐 접기 (0) | 2024.10.27 |
[Python] 추억 점수 (2) | 2024.10.26 |
[Python] 덧칠하기 (1) | 2024.10.26 |
[Python] 카드 뭉치 (0) | 2024.10.26 |