티스토리 뷰
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/17682
<나의 풀이>
def solution(dartResult):
# < 공백이 있는 문자열일 경우를 대비해 공백 제거해줌 >
# (ex : dartResult = "1 S 2 D * 3 T *")
dartResult = ''.join(dartResult.split(' '))
# < 필요한 변수 선언 >
answer = 0
lst = [dartResult[0]] # 첫번째 숫자는 미리 넣어 줌
index = 0
prev = 0
# < 숫자를 기준으로 나누는 코드 >
for i in range(1, len(dartResult)):
# i가 숫자가 아니면, lst[index]에 dartResult[i] 값 추가
if dartResult[i].isdigit() == False:
lst[index] += dartResult[i]
# i가 숫자일 때
else:
# dartResult[i-1] 값도 숫자일 때 (숫자 10일 때 해당)
# (이미 '1'에서 요소를 만들어 추가되었다면, 따로 요소 추가 없이 '0'도 넣어줌)
if dartResult[i-1].isdigit():
lst[index] += dartResult[i]
# 리스트에 새롭게 요소를 추가함 (숫자 0~9일 때 해당)
else:
lst.append(dartResult[i])
index += 1
# < 점수계산용 코드 >
for i in range(len(lst)):
# 숫자가 10인 경우
if lst[i][1].isdigit():
temp = int(lst[i][:2])
n = 2
# 숫자가 0~9인 경우
else:
temp = int(lst[i][0])
n = 1
for j in range(n, len(lst[i])):
if lst[i][j] == 'S':
temp = temp ** 1
elif lst[i][j] == 'D':
temp = temp ** 2
elif lst[i][j] == 'T':
temp = temp ** 3
elif lst[i][j] == '*':
temp = temp * 2
if i != 0:
answer += prev
elif lst[i][j] == '#':
temp *= -1
prev = temp
answer += temp
return answer
정규표현식으로 풀다가 자꾸 막혀서
결국엔 직관적으로 푼 문제😢
<다른 사람의 풀이>
import re
def solution(dartResult):
bonus = {'S' : 1, 'D' : 2, 'T' : 3}
option = {'' : 1, '*' : 2, '#' : -1}
p = re.compile('(\d+)([SDT])([*#]?)')
dart = p.findall(dartResult)
for i in range(len(dart)):
if dart[i][2] == '*' and i > 0:
dart[i-1] *= 2
dart[i] = int(dart[i][0]) ** bonus[dart[i][1]] * option[dart[i][2]]
answer = sum(dart)
return answer
# <배운점>
# => 정규표현식으로 코드를 짠 점
728x90
반응형
'[그 외] > ㄴ (코테연습 : 파이썬 ver)' 카테고리의 다른 글
[프로그래머스] 2016년 (파이썬) (0) | 2021.06.18 |
---|---|
[프로그래머스] 가운데 글자 가져오기 (0) | 2021.06.18 |
[프로그래머스] 같은 숫자는 싫어 (파이썬) (0) | 2021.06.18 |
[프로그래머스] 나누어 떨어지는 숫자 배열 (파이썬) (0) | 2021.06.18 |
[프로그래머스] 두 정수 사이의 합 (파이썬) (0) | 2021.06.18 |
댓글
250x250
반응형
TAG
- x만큼간격이있는n개의숫자
- GIT
- 피보나치
- 알고리즘
- 프로그래머스문제
- 조합
- 컴퓨터개론
- Summer/Winter Coding(~2018)
- 파이썬
- 재귀함수
- 백준
- 월간 코드 챌린지 시즌1
- SWiFT
- level2
- 프로그래밍언어
- 파이썬문법
- 설치
- 월간 코드 챌린지 시즌2
- 문법
- 코딩테스트
- 프로그래머스코딩테스트
- 알고리즘문제
- 정렬
- KAKAO
- 프로그래머스
- 이진탐색
- level1
- 코드잇
- 프로그래머스 프로그래머스문제
- 유닉스커맨드
최근에 달린 댓글
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
링크
- Total
- Today
- Yesterday