https://programmers.co.kr/learn/courses/30/lessons/42586
내 풀이
def solution(progresses, speeds):
answer=[]
day=[]
for i in range(len(progresses)):
complete=100-progresses[i]
if complete % speeds[i] !=0:
days = (complete // speeds[i])+1
else:
days = (complete // speeds[i])
day.append(days)
tem=0
for i in range(len(day)):
if day[i] > day[tem]:
answer.append(i-tem)
tem = i
answer.append(len(day)-tem)
return answer
좀 어거지로 푼 감이 있는거 같다.
day안에 걸리는시간을 미리 계산해놓고(올림 했어도 괜찮았을거같다)
day[0],day[1].. 순서대로 나가야하니까
작업순서가 빠르지만 작업 완료시점이 빠른건 바로 pop하면 된다.
반대로 작업순서가 빠르지만 작업 완료시점이 느린건 고려해줄 필요가 있었는데
작업순서가 빠른 일이 작업이 완료된 시점에는 당연히 작업순서가 느린 작업은 완료가 되어있으니까
그만큼 더해준다.
다른사람의 풀이
def solution(progresses, speeds):
Q=[]
for p, s in zip(progresses, speeds):
if len(Q)==0 or Q[-1][0]<-((p-100)//s):
Q.append([-((p-100)//s),1])
else:
Q[-1][1]+=1
return [q[1] for q in Q]
캬.. 이건 진짜 파이썬스럽다. 감탄이 나온다.
'취준 > 프로그래머스' 카테고리의 다른 글
짝 지어 제거하기 - 파이썬 (0) | 2022.06.02 |
---|---|
더 맵게 - 파이썬 (0) | 2022.06.01 |
124 나라의 숫자 - 파이썬 (0) | 2022.05.30 |
오픈채팅방 - 파이썬 (0) | 2022.05.26 |
실패율 - 파이썬 (0) | 2022.05.24 |