728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/42586
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
def solution(progresses, speeds):
deploy=[0]*100 # 각 날 당 배포하는 기능의 수
day=[] # 각 기능당 배포하는 데 걸리는 기간(일)
for i,j in zip(progresses,speeds):
day.append((100-i)//j + (1 if (100-i)%j>0 else 0))
last_day=0 # 이전 기능이 배포되는 데 걸리는 기간
for v in day:
if last_day==0: # 첫 번째 기능일 경우
deploy[v]+=1
last_day=v
else:
if v<=last_day: # 이전 기능의 배포하는 데 걸리는 기간이 더 크거나 같으면
deploy[last_day]+=1 # 이전 기능과 같은 날에 배포한다.
else:
deploy[v]+=1 # 이전 기능보다 배포하는 데 걸리는 기간이 더 크면 다른 날에 배포한다.
last_day=v
return [i for i in deploy if i >0]
Tip
- 큐(Queue)의 개념과 비슷하다.
- 기능이 완성되었어도 이전 기능이 완성되지 않았다면 배포가 될 수 없다. 즉, 선입선출의 관계이다.
- 따라서 각 기능이 완성되는 날짜들을 앞에서부터 확인하면서, 이전 기능이 다음 기능보다 완성 날짜가 더 늦으면 다음 기능의 완성 날짜를 이전 기능과 같게 해줘야 한다.
TIL
없음
728x90
반응형
'Algorithm, 코딩테스트' 카테고리의 다른 글
[프로그래머스/코딩테스트 연습/Lv.2] 프린터-파이썬(Python) (0) | 2022.11.04 |
---|---|
[프로그래머스/코딩테스트 연습/Lv.1] 푸드 파이트 대회-파이썬(Python) (0) | 2022.11.04 |
올바른 괄호-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.2] (0) | 2022.11.04 |
베스트앨범-파이썬(Python)[프로그래머스/코딩테스트 연습/Lv.3] (0) | 2022.11.03 |
의상-파이썬(Python) [프로그래머스/코딩테스트 연습/Lv.2] (0) | 2022.11.03 |