coding test - python/Programmers

Programmers / *[1차] 다트게임 / Python

sillon 2022. 4. 8. 23:28
728x90
반응형

 

*문제 출처는 프로그래머스에 있습니다.

문제 제목: [1차] 다트게임

문제 사이트: https://programmers.co.kr/learn/courses/30/lessons/17682


나의 풀이(미완성)

def solution(dart):
    arr=[]
    tmp = []
    sum = 0
    for x in dart: #문자열 분리
        arr.append(x)
    for i in range(len(arr)):
        if arr[i].isnumeric():
            arr[i] = int(arr[i])
        
    for i in range(1,len(arr)): #10 처리
        if arr[i-1] == 1 and arr[i] == 0:
            arr[i-1] = 10
            arr.pop(i)
            
    for i in range(1,len(arr)):#S,D,T
        if arr[i] == 'S':
            tmp.append(arr[i-1])
        elif arr[i] == 'D':
            tmp.append(arr[i-1]*arr[i-1])
        elif arr[i] == 'T':
            tmp.append(arr[i-1]*arr[i-1]*arr[i-1])
    
    return tmp

 

모범답안

def solution(dartResult):
    n = ''
    score = []
    for i in dartResult:
        if i.isnumeric():
            n += i
        elif i == 'S':
            n = int(n)**1
            score.append(n)
            n = ''
        elif i == 'D':
            n = int(n)**2
            score.append(n)
            n = ''
        elif i == 'T':
            n = int(n)**3
            score.append(n)
            n = ''
        elif i == '*':
            if len(score) > 1:
                score[-2] = score[-2] * 2
                score[-1] = score[-1] * 2
            else:
                score[-1] = score[-1] * 2
        elif i == '#':
            score[-1] = score[-1] * -1
        
    return sum(score)

 

728x90
반응형