728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/17682?language=python3
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
def solution(dartResult):
bonus={'S':1,'D':2,'T':3}
scores=[]
start_idx=0 # 각 점수의 인덱스
for i,v in enumerate(dartResult):
if not dartResult[i-1].isdigit() and dartResult[i].isdigit():
start_idx=i
elif v in bonus:
scores.append(int(dartResult[start_idx:i])**bonus[v])
elif v=='*':
scores[-2:]=[i*2 for i in scores[-2:]] # 해당 점수와 바로 전에 얻은 점수 2배로 함
elif v=='#':
scores[-1]*=-1 # 해당 점수만큼 마이너스
return sum(scores)
Tip
- isdigit()으로 해당 문자가 숫자인지 판단하기
TIL
- 리스트 인덱스에서 음수를 사용할 경우 뒤에서부터 해당 인덱스 번째 원소를 의미하게 된다.
ex) arr이 [1,2,3,4]일 때
arr[-1]은 4
arr[-2]는 3 - str.isdigit(): 해당 문자열이 숫자로만 이루어졌을 경우 True, 아닐 경우 False를 반환한다.
728x90
반응형
'Algorithm, 코딩테스트' 카테고리의 다른 글
체육복-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1] (0) | 2022.10.28 |
---|---|
로또의 최고 순위와 최저 순위-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1] (0) | 2022.10.28 |
실패율-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1] (0) | 2022.10.28 |
소수 만들기-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1] (0) | 2022.10.28 |
모의고사-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.1] (0) | 2022.10.28 |