본문 바로가기

두두의 알고리즘/문제

[구현] 프로그래머스 L1 '다트 게임' (Python)

728x90

<문제 링크>

https://programmers.co.kr/learn/courses/30/lessons/17682

 

코딩테스트 연습 - [1차] 다트 게임

 

programmers.co.kr


<문제 풀이>

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을 걸러내는 방법 익히기
  • 복습 알고리즘