본문 바로가기

Algorithm/프로그래머스

[프로그래머스] Lv.2 기능개발

https://school.programmers.co.kr/learn/courses/30/lessons/42586

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

정답코드

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
            
        if len(progresses) == 0:
            answer.append(count)
            break
    return answer
스택을 이용해서 문제를 풀었다.

혼자서 해볼려고 했지만 나에게는 아직 난이도가 있는 문제여서 해결하지 못하고 다른 분들의 코드를 도움받고 절반부터 시작해서 코드를 구현하였다.

중요한 점은 앞의 문서가 다 되지 않으면 다음의 문서가 완성되더라도 배포가 되지 않는다는 점이다. 그래서 while문으로 각 배열의 [0]번 인덱스의 합이 100이 넘어갈때부터 answer 배열에 append 하였다. 앞에 문서가 배포가 되면 pop(0)으로 제거해 나갔다.