연습장
29. 다트 게임 본문
정답률이 높은 순서에서 낮은 순서로 해결하던 중에 건너 뛰었던 유일한 문제이다.
정답률에 비해서 뭔가 어려운 느낌이 든다.
dartResult 의 입력으로 answer 의 출력이 나오게 된다.
점수 | 보너스 | 옵션 의 1set 으로 총 3set 의 점수를 하나로 한다.
점수는 0~10 까지
보너스는 앞의 점수를 S 1제곱 D 2제곱 T 3제곱
옵션은 *과 # 으로
* : 해당 점수와 그 앞에 점수를 2배로 만든다
# : 해당 점수에 x ( -1 )
dartResult 의 문자열을 3set로 각각 나눈 뒤
점수를 구했다.
굉장히 비효율적인 코드가 나온거같다.
def solution(dartResult):
answer = 0
num1 = ''
num2 = ''
num3 = ''
# num1
for i in range(2,len(dartResult)):
if dartResult[i] in ['1','2','3','4','5','6','7','8','9','0']:
num1 = dartResult[:i]
dartResult = dartResult[i:]
break
# num2
for i in range(2,len(dartResult)):
if dartResult[i] in ['1','2','3','4','5','6','7','8','9','0']:
num2 = dartResult[:i]
dartResult = dartResult[i:]
break
# num3
num3 = dartResult
###########
score1 = ''
bonus1 = ''
option1 = ''
if num1[-1] in ['*', '#']:
score1 = int(num1[:-2])
bonus1 = num1[-2]
option1 = num1[-1]
else :
score1 = int(num1[:-1])
bonus1 = num1[-1]
if bonus1 == 'D':
score1 = score1**2
elif bonus1 =='T':
score1 = score1**3
if option1 == '*':
score1 = score1*2
elif option1 == '#':
score1 = score1*(-1)
## num2
score2 = ''
bonus2 = ''
option2 = ''
if num2[-1] in ['*', '#']:
score2 = int(num2[:-2])
bonus2 = num2[-2]
option2 = num2[-1]
else :
score2 = int(num2[:-1])
bonus2 = num2[-1]
if bonus2 == 'D':
score2 = score2**2
elif bonus2 =='T':
score2 = score2**3
if option2 == '*':
score2 = score2*2
score1 = score1*2
elif option2 == '#':
score2 = score2*(-1)
## num3
score3 = ''
bonus3 = ''
option3 = ''
if num3[-1] in ['*', '#']:
score3 = int(num3[:-2])
bonus3 = num3[-2]
option3 = num3[-1]
else :
score3 = int(num3[:-1])
bonus3 = num3[-1]
if bonus3 == 'D':
score3 = score3**2
elif bonus3 =='T':
score3 = score3**3
if option3 == '*':
score3 = score3*2
score2 = score2*2
elif option3 == '#':
score3 = score3*(-1)
answer = score1+score2+score3
return answer
다른 사람 풀이
def solution(dartResult):
point = []
answer = []
dartResult = dartResult.replace('10','k')
point = ['10' if i == 'k' else i for i in dartResult]
print(point)
['1', 'S', '2', 'D', '*', '3', 'T']
이렇게 하면 리스트에 담겨서 하나씩 빼서 판단 할 수 있다고 한다.
역시 제일 감이 안오는 문제였다.
'프로그래머스 > 1단계' 카테고리의 다른 글
1단계 후기 (1) | 2024.01.22 |
---|---|
28. 가장 많이 받은 선물 (0) | 2024.01.22 |
27. 붕대 감기 (0) | 2024.01.22 |
26. 신고 결과 받기 (1) | 2024.01.22 |
25. 공원 산책 (0) | 2024.01.22 |