혜온의 이것저것

[코딩테스트 고득점 kit] 스택/큐 - 기능개발 (Python) 본문

Algorithm/Programmers

[코딩테스트 고득점 kit] 스택/큐 - 기능개발 (Python)

혜온 :) 2023. 4. 6. 14:25
문제 이해 및 풀이

작업 진도와 순서를 더해주면서 100이 넘는지 순서대로 확인해주었다.

첫번째 작업이 100이 넘는다면 제거해주고 cnt는 1씩 증가시켰다.

첫번째 작업이 진행 중 일때 다음 작업은 이미 끝났을 수도 있기 때문에 그 다음 작업들도 함께 검사해준다.

모든 작업물이 다 제거될 때 까지 반복해주고, cnt의 값이 0이상이면 배포되는 작업물이 있는 것이므로 answer에 추가해주었다.

 

최종코드
def solution(progresses,speeds):
    answer=[]
    while len(progresses)>0:
        cnt=0
        for i in range(len(progresses)):
            progresses[i]+=speeds[i]
        for i in range(len(progresses)):
            if progresses[0]>=100:
                progresses.pop(0)
                speeds.pop(0)
                cnt+=1
        if cnt>0:
            answer.append(cnt)
    return answer

 

다른 사람 코드
def solution(progresses, speeds):
    print(progresses)
    print(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)
    return answer

나는 작업진행상황을 더하는데 한번, 100이 넘는지 확인하기 위해 한번, 이렇게 두번 for문을 사용했었다.

다른 사람의 코드를 살펴보니 for문을 계속 돌면서 확인하지 않고 time이라는 변수를 사용하여 speeds와 곱해서 사용해주었다.

 

문제 출처

프로그래머스 코딩테스트 고득점 kit

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

 

프로그래머스

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

programmers.co.kr

 

Comments