본문 바로가기
Python3/프로그래머스

2022.06.01 [프로그래머스] (python 파이썬) 다트 게임

by ian's coding 2022. 6. 1.
728x90
반응형

 

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

 

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

 

programmers.co.kr


풀이

먼저 각 점수를 저장할 n변수를 만들고 숫자가 나오면 문자열 형태로 더해주었다.

 

만약 i가 S or D or T면 각 조건에 맞는 제곱을 해준 뒤, score배열에 추가해주고 n을 공백으로 초기화해준다.

(n을 초기화해야 다음 점수를 정상적으로 받기 때문)

 

i가 * 이면 score의 길이를 확인하고 1보다 크면 이전값이 있기 때문에 해당 값과 이전값에 *2를 해준다.

(여기서 scorel[-1]을 하면 가장 최근에 들어간 값이고 score[-2]를 하면 2번째로 최근에 들어간 값임)

 

i가 #이면 score[-1]에 -1을 곱해준다.

 

문자열을 모두 확인했으면 score에 저장된 값을 모두 더해 return해준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def solution(dartResult):
    score=[]
    n=''
    for i in dartResult:
        if i.isdigit():
            n+=i
        elif i=='S':
            score.append(int(n))
            n=''
        elif i=='D':
            n=int(n)**2
            score.append(int(n))
            n=''
        elif i=='T':
            n=int(n)**3
            score.append(int(n))
            n=''
        elif i=='*':
            if len(score)>1:
                score[-1]*=2
                score[-2]*=2
            else:
                score[-1]*=2
        elif i=='#':
            score[-1]*=-1
    return sum(score)
cs

 

 

 

 

728x90
반응형

댓글