프로그래머스 기능개발

DARTZ·2022년 5월 21일
0

알고리즘

목록 보기
69/135

틀린 내 코드

def solution(progresses, speeds):
    answer = []
    rest_work = []

    for r in range(len(progresses)):
        temp = (100 - progresses[r]) // speeds[r]
        if (100 - progresses[r]) % speeds[r] != 0:
            temp += 1

        rest_work.append(temp)

    queue = deque(rest_work)

    standard = queue.popleft()
    count = 0

    while queue:
        num = queue.popleft()
        count += 1

        if standard < num:
            answer.append(count)
            count = 0

    answer.append(count+1)

    return answer

회심의 코드 작성 후 첫번째 시도인데 틀렸다..

정답 코드

def solution(progresses, speeds):

    answer = []
    time = 0 # 날짜
    count = 0 # 작업 갯수
    
    while len(progresses)> 0: # 스택이 남아 있을때 동안 진행
        if (progresses[0] + time*speeds[0]) >= 100: # 작업이 완료되었는지 체크
            progresses.pop(0) # 완료 되었을 때, 하나씩 삭제
            speeds.pop(0)
            count += 1 # 카운트 증가
            
        else:
            if count > 0: # 시간내에 못 끝내는 경우
                answer.append(count) # 새로운 작업 개수 추가
                count = 0 # 카운트 초기화
            time += 1 # 날짜 증가
    answer.append(count) # 맨 마지막 작업은 추가가 불가능하기 때문에 while문이 끝나고 추가해준다.
    return answer

스택을 사용해서 구했다. 이런 아이디어는 아직 생각하기 이른 것 같다..

profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글