[Programmers/프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차] 다트 게임 - Python/파이썬 [해설/풀이]

SihoonCho·2022년 9월 21일
0
post-thumbnail
[Programmers/프로그래머스] 2018 KAKAO BLIND RECRUITMENT [1차 코딩테스트]
  1. [Lv. 1] 비밀 지도
  2. [Lv. 1] 다트 게임
  3. [Lv. 2] 캐시
  4. [Lv. 3] 셔틀버스
  5. [Lv. 2] 뉴스 클러스터링
  6. [Lv. 2] 프렌즈4블록
  7. [Lv. 3] 추석 트래픽

📌 문제



📝 입력 형식


💻 출력 형식


📖 입출력 예제


📌 풀이


def solution(dartResult):
    score = ''                  # 문자열 임시점수
    scores = []                 # 각 3번의 기회별 점수계산
    for elem in dartResult:
        if elem.isdigit():      # 숫자이면
            score += elem       # 문자열에 추가
        elif elem == 'S':                   # Single
            scores.append(int(score) ** 1)      # 1제곱
            score = ''                          # 임시점수 초기화
        elif elem == 'D':                   # Double
            scores.append(int(score) ** 2)      # 2제곱
            score = ''                          # 임시점수 초기화
        elif elem == 'T':                   # Triple
            scores.append(int(score) ** 3)      # 3제곱
            score = ''                          # 임시점수 초기화
        elif elem == '*':                   # x2
            if len(scores) == 1:                # 첫 번째 기회에서 스타상이 나왔을 때
                scores[-1] = scores[-1] * 2     # 첫 번째 점수만 x2
            else:                               # 첫 번째 기회이후 스타상이 나왔을 때
                scores[-1] = scores[-1] * 2     # 해당점수 x2
                scores[-2] = scores[-2] * 2     # 이전점수 x2
        elif elem == '#':                   # x (-1)
            scores[-1] = -scores[-1]            # 해당점수 x (-1)
            
    return sum(scores)          # 최종점수합산
profile
개발을 즐길 줄 아는 백엔드 개발자

0개의 댓글