본문 바로가기

알고리즘/프로그래머스

2018 KAKAO BLIND RECRUITMENT[1차] 다트 게임

1. 문제

- 프로그래머스 링크

 

2. 풀이

- 요구한 내용을 코드로 구현하기만 하면 되기 때문에 쉬운 편. 

- 다트 게임은 3번으로 숫자가 정해져있음, 원소가 3개인 배열을 만들고 주어진 문자열 구분을 위해 문자열 중 3번만 나오는 기준을 찾는다.

- 숫자는 10(2개 문자)이 나올 수 있고 특수문자는 옵션이기 때문에 영문자(딱 3번 나옴)가 나올때마다 idx를 변화시켜줌

- 나머지는 문제에서 요구하는대로 차례로 구현하면 됨. 

 

3. 코드

def solution(dartResult):
    arr = [0, 0, 0]
    idx = 0
    for c in dartResult:
        if '0' <= c <= '9':
            arr[idx] = arr[idx] * 10 + int(c)
        elif c == "*" or c == "#" :
            if c == "*" :
                if idx >= 2 :
                    arr[idx - 2] *= 2
                    arr[idx - 1] *= 2
                else :
                    arr[idx - 1] *= 2
            else :
                arr[idx - 1] *= -1
        else :
            idx += 1
            n = arr[idx - 1]
            if c == "S" :
                pass
            elif c == "D" :
                arr[idx - 1] *= n
            elif c == "T" :
                arr[idx - 1] *= n * n               
    return sum(arr)