티스토리 뷰

반응형

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

 

코딩테스트 연습 - 기능개발

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는

programmers.co.kr

 


⊙ 문제

⊙ 제한사항

⊙ 입출력 예

⊙ 입출력 예 설명


 

⊙ 문제 접근 과정

 

먼저 각 프로세스마다 며칠이 걸리는지 계산을 해줘야 한다.

그리고 계산한 결과를 days라는 배열을 만들어 넣어줬다.

 

넣어주고 나면 첫 번째 예제의 경우에 days는 [7,3,9]가 들어간다.

 

그다음엔 첫 번째 값을 빼서 스택에 넣어주고 그 값과 days에 있는 값들을 비교한다.

 

만약 stack의 맨 앞에 있는 값과 days에 맨 앞에 있는 값의 크기가 stack 값이 더 크거나 같으면

stack에 계속 넣어준다.

 

만약 아니라면 지금까지의 stack 길이를 answer에 넣어주고, 스택을 초기화한다.

초기화한 후 바로 days의 첫 번째 값을 다시 stack에 빼서 넣어주는 것을 반복한다.

 

반복문을 빠져나왔을 때 만약 stack에 남아있는 값이 존재한다면, 그 값의 길이도

answer에 마지막으로 추가해주면 끝이다. 

 

 

 

 


 

⊙ 문제 풀이

 

from collections import deque

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

    for i in range(len(progresses)):
        day=1
        while 100>progresses[i]+speeds[i]*day:
            day+=1
        days.append(day)

    stack = []

    stack.append(days.popleft())
    while days:
        if stack[0] >=days[0]:
            stack.append(days.popleft())
        else:
            answer.append(len(stack))
            stack=[]
            stack.append(days.popleft())
        
    if stack:
        answer.append(len(stack))

    return answer

⊙ 마무리

 

 

NONE

 

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함