프로그래머스 코딩테스트 고득점 Kit의 문제입니다.
https://programmers.co.kr/learn/challenges?tab=algorithm_practice_kit
문제
https://programmers.co.kr/learn/courses/30/lessons/17682
내가 작성한 코드
import re
def solution(dartResult):
answer = 0
ops = re.split('\d+', dartResult)[1:]
score = list(map(int, re.findall('\d+', dartResult)))
for i, op in enumerate(ops):
for c in op:
if c == 'D':
score[i] **= 2
elif c == 'T':
score[i] **= 3
elif c == '*':
for j in range(i,(-1 if i != 2 else 0),-1):
score[j] *= 2
elif c == '#':
score[i] *= -1
return sum(score)
- 문자열
- 숫자 기준으로 split하면 보너스/옵션
- 2자리 수 이상일 수 있으므로 '\d+' 패턴으로 확인
- '*'일 때, 바로 앞 스코어까지만 2배 처리
- 0 -> 0 / 1 -> 0 ,1 / 2 -> 1, 2
- i를 기준으로 2일 때만 1까지, 나머지는 0까지 -1씩 탐색
다른 사람이 작성한 코드
None
기억해야할 것
- 쉬운 문제지만, 조건이 이것저것 많아지면 놓치는 부분이 생긴다
'코딩테스트' 카테고리의 다른 글
[프로그래머스][KAKAO_BLIND][2019] 매칭 점수 (0) | 2021.09.02 |
---|---|
[프로그래머스][KAKAO_BLIND][2019] 길 찾기 게임 (0) | 2021.09.02 |
[프로그래머스][KAKAO_BLIND][2018] 비밀지도 (0) | 2021.09.02 |
[프로그래머스][KAKAO_BLIND][2019] 무지의 먹방 라이브 (0) | 2021.09.01 |
[프로그래머스][KAKAO_BLIND][2020] 블록 이동하기 (0) | 2021.09.01 |