프로그래머스/Python
[프로그래머스] [1차] 다트 게임 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트
우당탕탕 개발자
2023. 8. 10. 13:23
728x90
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 문제 설명
2. 풀이과정
- 각 다트별 점수를 저장할 리스트를 생성한다. score = list()
- 다트의 점수를 저장할 변수를 생성하고 문자로 입력받기 때문에 공백으로 초기화한다. num = ''
- 다트 점수 문자열을 하나씩 추출한다. for i in dartResult
- 만약 추출한 문자가 S이면 if (i == 'S')
- Single이므로 다트 점수에 1 제곱 한 점수를 리스트에 추가한다. score.append(int(num) ** 1)
- 다음 다트 점수 저장을 위해 다트 점수는 초기화한다. num = ''
- 만약 추출한 문자가 D이면 elif (i == 'D')
- Double이므로 다트 점수에 2 제곱 한 점수를 리스트에 추가한다. score.append(int(num) ** 2)
- 다음 다트 점수 저장을 위해 다트 점수는 초기화한다. num = ''
- 만약 추출한 문자가 T이면 elif (i == 'T')
- Triple이므로 다트 점수에 3 제곱 한 점수를 리스트에 추가한다. score.append(int(num) ** 3)
- 다음 다트 점수 저장을 위해 다트 점수는 초기화한다. num = ''
- 만약 추출한 문자가 *이면 elif (i == '*')
- 점수 리스트 원소 개수가 1개일 경우 if (len(score) == 1)
- 점수 하나만 2배로 바꿔주고 score[0] *= 2
- 점수 리스트 원소 개수가 2개 이상일 경우 else
- 점수 리스트에서 최신 점수 2개만 2배로 바꿔준다. score[-1] *= 2 score[-2] *= 2
- 만약 추출한 문자가 #이면 elif (i == '#')
- 가장 최근 점수를 빼주기 위해 음수로 바꿔준다. score[-1] *= -1
- 반면에 추출한 문자가 그 외의 문자(숫자)이면 else
- 다트 점수에 문자 그대로 추가해 준다. num += i
- 다트 점수를 모두 계산했다면 다트 점수를 모두 더해준 결과가 답이다. answer = sum(score)
반응형
3. 소스코드
def solution(dartResult):
answer = 0
score = list()
num = ''
for i in dartResult:
if (i == 'S'):
score.append(int(num) ** 1)
num = ''
elif (i == 'D'):
score.append(int(num) ** 2)
num = ''
elif (i == 'T'):
score.append(int(num) ** 3)
num = ''
elif (i == '*'):
if (len(score) == 1):
score[0] *= 2
else:
score[-1] *= 2
score[-2] *= 2
elif (i == '#'):
score[-1] *= -1
else:
num += i
answer = sum(score)
return answer
728x90
반응형