소스 코드
def solution(dartResult):
# 점수
score = [0,0,0]
# 점수 인덱스
idx = 0
# 방문 확인
check = [0 for _ in range(len(dartResult))]
# 기본 점수 확인
for q in range(len(dartResult)):
if check[q] == 0:
# '0' <= dartResult[q] <= '9' 이면
if 48 <= ord(dartResult[q]) <= 57:
check[q] = 1
# 10인 경우
if 48 <= ord(dartResult[q+1]) <= 57:
check[q+1] = 1
if dartResult[q+2] == 'S':
score[idx] = 10
elif dartResult[q+2] == 'D':
score[idx] = 100
else:
score[idx] = 1000
# 10이 아닌 경우
else:
if dartResult[q + 1] == 'S':
score[idx] = int(dartResult[q])
elif dartResult[q + 1] == 'D':
score[idx] = int(dartResult[q]) ** 2
else:
score[idx] = int(dartResult[q]) ** 3
idx += 1
# 보너스 계산하기
for w in range(len(dartResult)):
if dartResult[w] == '*':
if w == 2:
score[0] *= 2
elif w == 4 or w == 5:
score[0] *= 2
score[1] *= 2
else:
score[1] *= 2
score[2] *= 2
elif dartResult[w] == '#':
if w == 2:
score[0] *= -1
elif w == 4 or w == 5:
score[1] *= -1
else:
score[2] *= -1
answer = sum(score)
return answer
해결 방법
1. 문제에 나와있는 조건을 적용하고, 순서대로 해결
느낀 점
조금 더 깔끔한 코드 or 깔끔한 방식으로 문제를 해결해보고 싶다...
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제풀이.프로그래머스' 카테고리의 다른 글
[프로그래머스 코딩] 직업군 추천하기 - PYTHON (0) | 2021.08.23 |
---|---|
[프로그래머스 코딩] 비밀 지도 - PYTHON (0) | 2021.08.22 |
[프로그래머스 코딩] 튜플 - PYTHON (0) | 2021.08.20 |
[프로그래머스 코딩] 신규 아이디 추천 - PYTHON (0) | 2021.07.28 |
[프로그래머스 코딩] 키패드 누르기 - PYTHON (0) | 2021.07.28 |