티스토리 뷰
안녕하세요 프로그래머스 다트게임 문제 풀이입니다.
문제는 아래의 링크를 참고하시면 됩니다!
programmers.co.kr/learn/courses/30/lessons/17682
문제를 간단히 설명하자면
주어진 숫자와 문자로 이루어진 문장을 받고, 적절한 점수의 합계를 출력하는 문제입니다.
저는 0 과 10을 어떻게 따로 처리할지, '*' 문자를 처리할 경우 이전의 숫자에 영향을 주는 것을 어떻게 처리할지, 1S*, 3D, 10S처럼 문자의 길이가 가변적이라 split을 어떻게 해야 할지에 대해 초점을 맞추어 코드를 작성했습니다!
def solution(dartResult):
number = 0
result = []
for i in dartResult :
if i in ['S', 'D', 'T', '*', '#']:
print(number)
if i == 'S':
continue
elif i == 'D' :
number **= 2
elif i == 'T' :
number **= 3
elif i == '*' :
result[len(result) - 1] *= 2
number *= 2
elif i == '#' :
number *= -1
else:
if number == 1 and i == '0':
number = 10
else :
result.append(number)
number = int(i)
result.append(number)
print(result)
answer = sum(result[1:])
return answer
저는 우선 정규 표현식을 사용하지 않아서 split하기 힘들 것이라 생각해서
한 문자씩 처리했습니다.
숫자가 나오고, 그 다음 문자에 대한 적절한 계산을 해준 후,
다시 숫자가 나오면 이를 결과 리스트에 저장하고, 이전 과정을 반복했습니다.
0과 10의 경우에는 10은 '0'을 처리하기 전 '1'을 처리했기 때문에
0과 예외를 두어 계산을 진행하였습니다.
마지막 answer에 대한 값은 결과 리스트의 1번째 index부터 끝까지의 합으로 return 해주었습니다.
(result[0] 값은 처음에 무조건 쓰레기 값이 들어가기 때문에 합계에서 빼주었습니다!)
이상으로 프로그래머스 다트게임 문제 풀이였습니다.
코드나 설명에 이상 있으면 언제든 댓글로 알려주세요! 감사합니다!
'PYTHON' 카테고리의 다른 글
[프로그래머스/PYTHON] 소수찾기 (0) | 2021.02.02 |
---|---|
[프로그래머스/PYTHON] 더 맵게 (1) | 2021.01.07 |
[프로그래머스/PYTHON] 전화번호 목록 (1) | 2021.01.05 |
[프로그래머스/PYTHON] 주식 가격 (1) | 2020.12.30 |
[BAEKJOON/PYTHON] 11650, 11651번 : 좌표 정렬하기 (0) | 2020.08.28 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래머스
- redux-thunk
- error
- AxiosInterceptor
- js
- 파이썬
- webpack
- reactrouter
- Vue
- redux
- 백준
- Vuex
- React
- Preloading
- 문제풀이
- python
- TypeScript
- clean code
- programmers
- GraphQL
- 상호평가
- SOAP API
- React.memo
- SPA
- Vue.js
- 알고리즘
- v-for
- Repository Pattern
- bundler
- Transpiler
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함