잠 안 올 때 끄적끄적
[프로그래머스/파이썬/python3] Lv1. [1차] 다트 게임 본문
>문제
> 풀이
이게 내 풀인데 풀이가 너무 더러워 보여서.. 눈물이 난다
def solution(dartResult):
i=0
j=0 #0,1,2
b={"S":"**1","D":"**2","T":"**3"}
res_li=[0,0,0]
while (i<len(dartResult)):
num=""
while (dartResult[i] in r'["1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"|"0"]'):
num+= dartResult[i]
i+=1
res_li[j]=eval(num+b[dartResult[i]])
i+=1
if (i<len(dartResult)):
if dartResult[i] == "#":
res_li[j]*=(-1)
i+=1
elif dartResult[i] == "*":
res_li[j]*=2
i+=1
if j!= 0:
res_li[j-1]*=2
j+=1
return sum(res_li)
고민을 되게많이했다.
처음에는 3*3 2차배열 만들어서 풀려고 했는데, 입력값 길이가 고정되지 않아서 어떻게 해야 할 지 모르겠더라고.
그래서 글자 하나씩 읽어서 if문 때려박아서 했다... 흑
그리고 아래는 다른사람들이 푼 내용이다
이사람은 re 이용해서 2차배열을 만들었다. 진짜 훨 깔끔함
regex 문법에 익숙하지 않았는데 이거 보니까 꼭 알고있어야겠다 생각도 들고
numpy는 안되길래 re도 안되려나 싶었는데 그건 또 되나보다.
여기는 4번째줄이 너무너무 인상깊어서 가지고왔다.
list(dartResult) 하면 10이 1,0으로 분리돼서 골치였는데 저런 식으로 대체해버리니까 훨씬 깔끔하고 다루기 편해졌다!
나도 담에 꼭꼭꼭 써먹어야지
'코딩 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/파이썬/python3] Lv1. 실패율 (0) | 2023.02.02 |
---|---|
[프로그래머스/파이썬] Lv1. 기사단원의 무기 (0) | 2023.01.29 |
[프로그래머스/파이썬/python] Lv1. 명예의 전당 (1) (0) | 2023.01.29 |
[프로그래머스/파이썬/python3] Lv1. 문자열 나누기 (0) | 2023.01.29 |
[프로그래머스/파이썬/python3] Lv1. 가장 가까운 글자 (0) | 2023.01.29 |