[프로그래머스](python) 다트 게임 - 2018 KAKAO BLIND RECRUITMENT
🧩 수도 코드
dartresult 원소 하나하나 판별하여 stacklist에 넣어준다.
S,D,T 중 하나이면 stacklist에서 먼저 들어간 숫자를 빼낸 다음 계산 후 다시 stacklist에 넣는다.
🏁 내 풀이
def solution(dartresult):
dartresult = dartresult.replace('10','A')
tmp = []
bonus = {'S': 1, 'D': 2, 'T': 3}
option = {'*': 2, '#': -1}
for dart in dartresult:
if dart.isdigit() or dart == 'A': # 숫자인지 판별
tmp.append(10 if dart == 'A' else int(dart)) #숫자일 때
elif dart in ('S','D','T'): #SDT
last = tmp.pop()
tmp.append(last ** bonus[dart])
elif dart == '#':
tmp[-1] *= option[dart] # lastnumber * -1
elif dart == '*':
last = tmp.pop()
if len(tmp): # if len(tmp) is not 0
tmp[-1] *= option[dart] #lastnumber * 2
tmp.append(last * option[dart])
return sum(tmp)
dartresult = dartresult.replace('10','A') tmp = [] bonus = {'S': 1, 'D': 2, 'T': 3} option = {'*': 2, '#': -1}
10이 나오면 1,0 따로 계산하기 때문에 10을 A로 미리 바꾸어두었다.
tmp로 stacklist 작성
bonus, option은 딕셔너리 값으로 지정해주었다.
for dart in dartresult: if dart.isdigit() or dart == 'A': tmp.append(10 if dart == 'A' else int(dart))
dartresult에서 dart값이 숫자인지 판별한다.
dart가 숫자이거나, 'A'이면(10이면)
tmp(stacklist)에 int(dart) 또는 10을 넣는다.
elif dart in ('S','D','T'): #SDT last = tmp.pop() tmp.append(last ** bonus[dart])
dart값이 S,D,T 중에 하나이면
tmp에 넣은 수를 빼서 bonus 값으로 계산 후 다시 tmp에 넣는다.
elif dart == '#': tmp[-1] *= option[dart] elif dart == '*': last = tmp.pop() if len(tmp): tmp[-1] *= option[dart] tmp.append(last * option[dart])
dart값이 '#'이면
tmp에서 마지막 값과 option의 -1값을 곱한다. (-1 곱이라 값을 빼내지않고 그냥 곱했음)
dart값이 '*'이면
tmp에서 마지막 값을 빼내고,
if len(tmp)
tmp값이 0이 아니면 tmp의 마지막 값과 option의 2를 곱하고 tmp에 더한다.
📌 .isdigit()
숫자인지 아닌지 판별하는 함수
📌dictionary
🧩 다른 풀이
import re
def solution(dartResult):
bonus = {'S' : 1, 'D' : 2, 'T' : 3}
option = {'' : 1, '*' : 2, '#' : -1}
p = re.compile('(\d+)([SDT])([*#]?)')
dart = p.findall(dartResult)
for i in range(len(dart)):
if dart[i][2] == '*' and i > 0:
dart[i-1] *= 2
dart[i] = int(dart[i][0]) ** bonus[dart[i][1]] * option[dart[i][2]]
answer = sum(dart)
return answer
Author And Source
이 문제에 관하여([프로그래머스](python) 다트 게임 - 2018 KAKAO BLIND RECRUITMENT), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@richeberry/프로그래머스python-다트-게임-2018-KAKAO-BLIND-RECRUITMENT저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)