728x90
<문제 링크>
https://programmers.co.kr/learn/courses/30/lessons/17682
<문제 풀이>
1. 문자가 숫자면 점수에 추가. 단, 10일 경우 고려
2. 문자가 문자면 보너스 룰 적용
3. 문자가 기호면 옵션 룰 적용
<코드>
def solution(dartResult):
answer = 0
score = []
for idx, i in enumerate(dartResult):
if i.isnumeric():
score.append(int(i))
#if score[-1]==0 and score[-2]==1 and dartResult[idx-1]+dartResult[idx]=="10":
if dartResult[idx-1]+dartResult[idx]=="10":
score[-2] = 10
score.pop()
elif i.isalpha():
if i=="S":
score[-1] = score[-1] ** 1
elif i=="D":
score[-1] = score[-1] ** 2
else:
score[-1] = score[-1] ** 3
else:
if i=="*":
if len(score)==1:
score[-1] = score[-1]*2
else:
score[-1] = score[-1]*2
score[-2] = score[-2]*2
elif i=="#":
score[-1] = score[-1]*(-1)
return sum(score)
<고쳐야 할 점>
- 문제 제대로 읽고 이해하기
- 이해가 안 되면 일단 하나씩 구현해보기
- 문자열에서 10을 걸러내는 방법 익히기
- 복습 알고리즘
'두두의 알고리즘 > 문제' 카테고리의 다른 글
[순열과 조합] 프로그래머스 L1 '두 개 뽑아서 더하기' (Python) (0) | 2022.03.20 |
---|---|
[탐욕법] 프로그래머스 L1 '최소직사각형' (Python) (0) | 2022.03.20 |
[정렬] 프로그래머스 L1 '문자열 내 마음대로 정렬하기' (Python) (0) | 2022.03.20 |
[소수의 판별] 프로그래머스 L1 '소수 찾기' (Python) (0) | 2022.03.20 |
[기타] 프로그래머스 L1 '약수의 합' (Python) (0) | 2022.03.19 |