본문 바로가기

알고리즘

99클럽 코테 스터디 8일차 TIL

문제 설명

풀이 과정 & 코드

  • 앞에서부터 완료가 되면 하나씩 꺼내서 완료 리스트에 담아 최종 답으로 return 하는 문제임
  • 하지만 앞에 progress가 마무리 되지 못하면 뒤가 마무리 되었다 하더라도 계속 완료가 되지 못함
  • 따라서 뒤와 상관없이 앞을 계속해서 speeds 리스트에 인덱스에 맞게 증가시키면서 값을 더하고 100 이상을 만족하면 꺼내고 다음걸 확인하는 식으로 코드를 구현하면 됨
def solution(progresses, speeds):
    answer = []
    done = []
    progresses = progresses[::-1]
    speeds = speeds[::-1]
    while progresses:
        if progresses[-1] < 100:
            for i in reversed(range(len(progresses))):
                progresses[i] += speeds[i]

        if progresses[-1] >= 100:
            while progresses and progresses[-1] >= 100:
                done.append(progresses.pop())
                speeds.pop()

            answer.append(len(done))
            done = []

    return answer