문제

문제

 

처음 작성한 코드

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