Level 1. [1차]다트게임

Pear_Mh·2021년 6월 16일
0

Programmers-Level 1.

목록 보기
22/49

22. 다트게임

코딩 테스트 연습 > 2018 KAKAO BLIND RECRUITMENT > 다트게임
https://programmers.co.kr/learn/courses/30/lessons/17682


문제 정리

Input value =

ㆍ dartResult(str)

  • number = '1,2,3,4,5,6,7,8,9,10'
  • Bonus = 'SDT'
  • Event = '*#'
  1. dartResult 의 원소를 수행하며 각 성분에 대한 필터링을 수행하되,

1-1. 전의 점수에도 영향을 미치는 '*'을 고려하기 위해 임시 저장 부분이 필요

return sum


제한 조건

ㆍ 점수|보너스|옵션 으로 이루어진 문자열 3세트

  • 점수는 0에서 10 사이의 정수입니다.

  • 보너스는 S,D,T 중 하나입니다.

  • 옵션은 * 이나 # 중 하나이며, 없을 수도 있습니다.


풀이 방법

def solution(dartResult):
    number = [str(i) for i in range(11)]
    bonus  = 'SDT'
    event  = '*#'

    result = []
    for i in dartResult:
        if i in number:
            if result == [] or result[-1] not in number:
                result.append(i)
            else:
                result[-1]+=i
        elif i in bonus:
            result[-1]=int(result[-1])**(bonus.index(i)+1)
        elif i in event:
            if i == '*':
                if len(result) >= 2:
                    result[-2]=int(result[-2])*2
                result[-1]=int(result[-1])*2
            else:
                result[-1]=int(result[-1])*-1
    return sum(result)

# Code test
dartResult = '1S*2T*3S'
solution(dartResult)

마치며

  1. 다른 사람 풀이로 정규표현식을 이용하여 푸는 방법이 있었으나, 아직 실력이 미숙하여 제대로 이해하지 못했다...

  2. 한달 전에 풀었을 때 보다 4줄 가량 코드가 줄었으나.. 아직 더 줄일 수 있을꺼라 생각된다..! 더 노력해야지

profile
Beyond the new era.

0개의 댓글