문제
처음 작성한 코드
def solution(progresses, speeds):
from collections import deque # 큐
import math
answer = deque([]) # 배포하는 데까지 걸리는 날짜 수
result = []
progresses = deque(progresses)
speeds = deque(speeds)
while progresses: # 진행속도를 계산하여 배포하는 데까지 걸리는 날짜 수를 저장
answer.append(math.ceil((100-progresses.popleft())/(speeds.popleft())))
cnt = 1
for _ in list(answer):
if len(answer):
a = answer.popleft()
if not len(answer):
result.append(cnt)
break
for j in list(answer):
if a >= j: #기준점(맨 왼쪽 수) 보다 작으면 하나씩 pop 하면서 cnt 증가
answer.popleft()
cnt+=1
else: # 큰거 나오면 지금까지의 cnt를 저장하고 중단
result.append(cnt)
cnt=1
break #중단하고 큰 for문으로 가면 answer 맨 왼쪽[0]엔 다음 배포날짜가 나옴
return result
깨달은 점
1. math.ceil()하면 올림이 되고 반환도 int형으로 해준다.
2. level2의 스택/큐 문제를 푸는데 조금 어렵다.. 하다보면 되겠지..
3. 어떻게 풀지는 알겠는데 파이썬으로 구현이 좀 어렵다.. 파이썬 좋은데 어렵다....
4. collections의 deque 진짜 좋다.. popleft() 빠르다 대박~
'Programmers' 카테고리의 다른 글
소수 찾기 (0) | 2021.01.03 |
---|---|
조이스틱 (0) | 2021.01.02 |
주식가격 (0) | 2021.01.01 |
이상한 문자 만들기 (0) | 2021.01.01 |
자연수 뒤집어 배열로 만들기 (0) | 2021.01.01 |