[프로그래머스] 다트

cheeeese·2022년 3월 5일
0

코딩테스트 연습

목록 보기
55/151
post-thumbnail

📖 문제

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

💻 내 코드

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

💡 풀이 및 다른 사람 코드

  • 숫자가 두자리 수가 될 수도 있으므로 if i.isnumeric(): n+=i를 해줌

다른 사람 풀이

def solution(dartResult):
    point = []
    answer = []
    
    # 숫자가 10이 될 때를 처리
    #k로 바꿔둔 뒤 k라면 10으로 계산, 아니라면 그대로 계산
    dartResult = dartResult.replace('10','k')
    point = ['10' if i == 'k' else i for i in dartResult] 
    print(point)

    i = -1
    sdt = ['S', 'D', 'T']
    for j in point:
        if j in sdt :
            answer[i] = answer[i] ** (sdt.index(j)+1)
        elif j == '*':
            answer[i] = answer[i] * 2
            if i != 0 :
                answer[i - 1] = answer[i - 1] * 2
        elif j == '#':
            answer[i] = answer[i] * (-1)
        else:
            answer.append(int(j))
            i += 1 # 인덱스 +1
    return sum(answer)

0개의 댓글