[프로그래머스] Level1, 1차 다트게임 (Python)

2021. 6. 18. 17:39·알고리즘/프로그래머스
728x90
반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/17682?language=python3 

 

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

 

programmers.co.kr

 

코드

def solution(dartResult):
    answer = []
    list_dartResult = list(dartResult)
    demo = []
    for i in range(len(list_dartResult)):
        if list_dartResult[i] == '1' and list_dartResult[i+1] == '0':
            demo.append('10')
        elif list_dartResult[i] == '0' and list_dartResult[i-1] == '1':
            continue
        else:
            demo.append(list_dartResult[i])
    for i in range(1,len(demo)):
        if demo[i] == 'S':
            answer.append(int(demo[i-1]))
        elif demo[i] == 'D':
            answer.append(int(demo[i-1]) ** 2)
        elif demo[i] == 'T':
            answer.append(int(demo[i-1]) ** 3)
        elif demo[i] == '*':
            if len(answer) >= 2:
                answer[-1] = answer[-1] * 2
                answer[-2] = answer[-2] * 2
            else:
                answer[-1] = answer[-1] * 2
        elif demo[i] == '#':
            answer[-1] = answer[-1] * -1
    return sum(answer)

점수가 0점에서 10점까지 나올 수 있기때문에 1,0 이 있을경우 10점으로 볼 수 있도록 demo리스트를 새로만들어 추가해주고 다음 검사 할떄 0이 나왔을때 앞에 값이 1일 경우에는 이미 10으로 넣었으니 continue 시켜준다. 나머지는 그대로 demo 리스트에 넣어준다.

 

demo리스트를 확인하면서 S,D,T일 경우에 각각 그대로, 제곱, 세제곱을 해줘 answer에 append 시켜준다.

 

그리고 *일 경우에는 answer에 추가된 값이 길이 2이상이면 마지막값 그 전에 값을 *2 해주고 길이가 2이상이 아니라면

맨마지막 값만 *2를 해준다.

 

그리고 #일 경우에는 맨마지막 값을 -1을 곱해주면 된다.

 

맨마지막 값을 바꿔주는 이유는 다트는 점수|보너스|옵션 순으로 들어오기 때문에 *,#이 나올 때는 그전에 값이 점수,보너스가 answer에 들어갔기 때문에 가장 최근에 들어간 값 answer[-1]을 바꿔주면 된다.

반응형
저작자표시 (새창열림)

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[프로그래머스] Level1, 내적 (Python)  (0) 2021.06.24
[프로그래머스] Level1, 폰켓몬 (Python)  (0) 2021.06.18
[프로그래머스] Level1, 로또의 최고 순위와 최저 순위 (Python)  (0) 2021.06.18
[프로그래머스] Level1, 1차 비밀지도 (Python)  (0) 2021.06.18
[프로그래머스] Level1, 실패율 (Python)  (0) 2021.06.17
'알고리즘/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] Level1, 내적 (Python)
  • [프로그래머스] Level1, 폰켓몬 (Python)
  • [프로그래머스] Level1, 로또의 최고 순위와 최저 순위 (Python)
  • [프로그래머스] Level1, 1차 비밀지도 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196)
      • study (1)
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1)
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (19)
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SFlash
    SpringBoot
    jpa
    인프런
    백준
    spring
    파이썬
    orm
    해결
    알고리즘
    실전프로젝트
    java
    코딩테스트
    에러
    괄호
    정리
    버그
    브루트포스
    카카오인턴
    스파르타코딩클럽
    프로그래머스
    카카오코딩테스트
    미니프로젝트
    그리디
    후기
    조합
    항해99
    항해마켓
    김영한
    회고
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[프로그래머스] Level1, 1차 다트게임 (Python)
상단으로

티스토리툴바