[プログラマpython]スタックキュー-機能開発
8867 ワード
プログラマスタックキュー機能開発プール
https://programmers.co.kr/learn/courses/30/lessons/42586
問題はリンクにあります
stackを使用してpop(0)を使用する場合、効率がない場合は、stackを反転してpop(*-1 defaultを使用することができます.
私はキューで問題を解いた.
問題を解く
Teke 1.2.3.4が間違っていたら
他人の解答
100-p-(p-100)を使わずにmathを使いますceilなしでオンラインを書きたいようです.(p-100)=>負、(p-100)/s=>負の値を降格しました(負から絶対値に降格しました)-(p-100)/s)=>正の値をアップグレードしました
前回も、Zipをしっかり利用します!!
https://programmers.co.kr/learn/courses/30/lessons/42586
問題はリンクにあります
stackを使用してpop(0)を使用する場合、効率がない場合は、stackを反転してpop(*-1 defaultを使用することができます.
私はキューで問題を解いた.
問題を解く
import math
from collections import deque
def solution(progresses, speeds):
answer = []
leftover = [] #남은 양
spentday = deque() #필요한 일수
cnt = 1
for i in progresses:
leftover.append(100 - i) #100에서 진행도를 빼줘서 남은걸 구해준다
for i in range(len(leftover)):
spentday.append(math.ceil(leftover[i] / speeds[i])) #올림해줌
while True:
for i in range(1, len(spentday)):
tmp = spentday[0] #첫번째를 기준으로
if tmp >= spentday[i]: #첫번째보다 필요한 일수가 적은것이 있나 확인
cnt += 1 #첫번째가 완료된다면 같이 완료될 개수 cnt++
elif tmp < spentday[i]: #만약 첫번째보다 크다면
break #for문 종료
answer.append(cnt)
for j in range(cnt): #완료된 개수만큼 pop해주기
spentday.popleft()
cnt = 1 #개수 초기화
if len(spentday) == 0: #0이 될때까지 반복
break
return answer
解けたけどめちゃくちゃな感じうううTeke 1.2.3.4が間違っていたら
[99, 99, 99] ,[1, 1,1]
を追加してみましょう.他人の解答
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]
zipで解決しました.100-p-(p-100)を使わずにmathを使いますceilなしでオンラインを書きたいようです.(p-100)=>負、(p-100)/s=>負の値を降格しました(負から絶対値に降格しました)-(p-100)/s)=>正の値をアップグレードしました
前回も、Zipをしっかり利用します!!
Reference
この問題について([プログラマpython]スタックキュー-機能開発), 我々は、より多くの情報をここで見つけました https://velog.io/@modsiw/프로그래머스-python-스택큐-기능-개발テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol