728x90
https://school.programmers.co.kr/learn/courses/30/lessons/17682
문제 풀이
문자열에 대한 문제이다.
빈 문자열에 연산할 내용을 추가해줄 것이다.
숫자일 경우, '+'와 함께 숫자를 추가하는데 연속으로 숫자가 오면 '+'을 빼고 숫자만 추가해준다.
T, D, S는 제곱을 넣어준다.
'*'와 '#'은 무조건 숫자 2칸 뒤에 위치하며 있을 수도 없을 수도 있기 때문에
숫자를 확인할 때 확인해서 추가해준다.
'#'은 단순하게 해당 점수가 '-' 되므로 '-1*'를 곱해주면 되지만
'*'은 앞의 값을 먼저 2배 해주고 지금 점수를 두배 해줘야 해서 flag로 확인해주었다.
느낀 점
어거지로 eval() 함수 써보려고 구현했다가 2점밖에 받지 못했다..
연습이니까 이렇게해도 상관없지만 실전에서는 항상 가장 효율적인 코드를 사용해야겠다.
코드
def solution(dartResult):
result = ''
flag = False
for i in range(len(dartResult)):
if dartResult[i].isdigit():
if i+2 < len(dartResult):
if dartResult[i+2] == '#': result += '-1*'
elif dartResult[i+2] == '*':
if i != 0: result += '*2'
flag = True
if dartResult[i-1].isdigit(): result += dartResult[i]
else: result += f'+{dartResult[i]}'
else:
if dartResult[i] == 'T': result += '**3'
if dartResult[i] == 'D': result += '**2'
if dartResult[i] == 'S': result += '**1'
if flag:
result += '*2'
flag = False
return result
'문제 풀이 > 프로그래머스 (Programmers)' 카테고리의 다른 글
[Python] 프로그래머스 : 모의고사 (0) | 2022.07.05 |
---|---|
[Python] 프로그래머스 : 예산 (0) | 2022.07.05 |
[Python] 프로그래머스 : [1차] 비밀지도 (0) | 2022.07.05 |
[Python] 프로그래머스 : 문자열 내 마음대로 정렬하기 (0) | 2022.07.05 |
[Python] 프로그래머스 : 빛의 경로 사이클 (0) | 2022.07.01 |
댓글