-
[Programmers] [1차] 다트 게임programing/Algorithm 2021. 4. 11. 19:27
[1차] 다트 게임
2018 KAKAO BLIND RECRUITMENT
level 1
python 3
import re score_table = { 'S': 1, 'D': 2, 'T': 3 } option_table = { '*': 2, '#': -1, '': 1, } def getRounds(_str): pattern = re.compile(r'(\d+)([SDT])([*#]?)') return pattern.findall(_str) def calculateScore(_rounds): scoreList = [0] * len(_rounds) for i, _round in enumerate(_rounds): [baseScore, exponent, option] = _round if option == '*' and i > 0: scoreList[i - 1] *= 2 score = int(baseScore) ** score_table[exponent] * option_table[option] scoreList[i] = score return scoreList def solution(dartResult): _rounds = getRounds(dartResult) scoreList = calculateScore(_rounds) return sum(scoreList)
wjd정규표현식을 이용해 쉽게 구현할 수 있다.
처음에는
split
함수를 이용하려다 보니 정규표현식이 굉장히 복잡했는데,findall
을 사용하니 훨신 편해졌다.'programing > Algorithm' 카테고리의 다른 글
[programmers] 약수의 개수와 덧셈 (0) 2021.05.15 [Programmers] 124 나라의 숫자 (0) 2021.04.18 [Programmers] 비밀지도 (0) 2021.04.04 [Programmers] 실패율 (0) 2021.03.28 [Programmers] 예산 (0) 2021.03.28 댓글