Algorithm : Programmers - 다트 게임

코일·2021년 12월 28일
0

algorithm

목록 보기
26/37
post-thumbnail

👉 문제

🤔생각해보기

  1. 입력받은 파라미터를 반복문을 돌린다.
  2. 반복문에서 숫자를 변수에 넣는다
  3. 다음 반복시에 나타나는 경우마다 변수를 계산한다.
  4. 계산된 변수는 배열로 append 하고 초기화한다.
  5. 옵션에서의 계산을 배열로 처리한다.

👉 해결

def solution(dartResult):
    
    num = ''
    result= []
    for i in dartResult:
        # 숫자 다음엔 항상 문자가 나오는 것을 활용 !
        if i.isnumeric(): # 숫자면 num 에 담아라
            num += i
        elif i == "S": # i 가 S 면, 
            num = int(num)**1  # 숫자였을때 담아둔 num을 1승 함
            result.append(num) # 1승한 num 을 배열에 넣음
            num = ''           # 다음 숫자를 위해 초기화
        elif i == "D":
            num = int(num)**2
            result.append(num)
            num = ''
        elif i == "T":
            num = int(num)**3
            result.append(num)
            num = ''
        elif i == "*"  : 
            # 추출해낸 값을 가진 배열의 index를 활용
            if len(result) > 1:
                result[-1] = result[-1] * 2
                result[-2] = result[-2] * 2
            else:
                result[-1] = result[-1] * 2
            
        elif i == "#":
            result[-1] = result[-1] * -1
        
        print(result)
    return sum(result)

1차 시도 후, 참고할만한 예제를 찾고 나니, 새삼 너무 배열만을 고집해왔던것 같았다. 다양한 문제를 만나고, 더욱 고심하면서 문제를 풀어봐야겠다.

profile
How do you get what you want?🤔🤔

0개의 댓글