https://school.programmers.co.kr/learn/courses/30/lessons/17682
소스코드
def solution(dartResult):
answer = 0
score = []
for i in range (len(dartResult)):
#숫자 추출
if dartResult[i].isdigit():
if dartResult[i] == '1' and dartResult[i+1] == '0':
score.append(10)
elif dartResult[i] == '0' and dartResult[i-1] == '1':
continue
else :
score.append(int(dartResult[i]))
#보너스 계산
else :
if dartResult[i] == 'D':
score[-1] = score[-1] ** 2
elif dartResult[i] == 'T':
score[-1] = score[-1] ** 3
#옵션 계산
if dartResult[i] == '*':
if len(score) > 1:
score[-2] *= 2
score[-1] *= 2
else :
score[-1] *= 2
elif dartResult[i] == '#':
score[-1] *= (-1)
return sum(score)
풀이
1. 숫자 찾기
1-1. dartResult의 내부 요소를 가지고 돌면서 숫자면 score에 넣는다
1-2. 만약 10이 있다면 10을 넣어주는 처리를 해줘야 함
2. 보너스 계산하기
2-1. S, D, T에 대해 처리를 해주는데 가장 최근에 등록된 점수에 대해 알맞는 제곱수를 연산해준다.
3. 옵션 계산하기
3-1. *일때 최근 등록 점수와 그 이전 점수에 대해 2를 곱해야 하는데 만약 원소가 1개 일때는 index error가 발생하게 된다.
'Coding test' 카테고리의 다른 글
[프로그래머스/파이썬/가장 큰 정사각형 구하기] (0) | 2024.03.09 |
---|---|
[프로그래머스/Lv.1/파이썬] 비밀지도 (0) | 2024.03.08 |
[프로그래머스/Lv.1/파이썬] 키패드 누르기 (0) | 2024.03.07 |
[프로그래머스/Lv.1/파이썬] 성격 유형 검사하기 (0) | 2024.03.07 |
[백준/9465/파이썬] 스티커 - DP (0) | 2024.02.08 |