공부/코딩테스트

[프로그래머스] 기능개발(파이썬)

ghhong 2021. 1. 26. 22:44

()

나의 답 :

import collections, math
def solution(p, s):
    p=collections.deque(p)
    s=collections.deque(s)

    answer = []
    for i in range(len(p)):
        p[i]=math.ceil((100-p[i])/s[i])
   
    while len(p):
        cnt=1
        a=p.popleft()
        p1=p.copy()
        for i in range(len(p)):
            if p[i]<=a:
                p1.popleft()
                cnt+=1
            else: break
        answer.append(cnt)
        p=p1.copy()
    return answer

 

다른 사람의 답 :

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]

 

1. list의 pop을 사용하는 것 보다

2. from queue import Queue 해서 큐를 사용하는 것보다

3. import collections 의 collections.deque 를 사용하는 것이 더 효율적이더라.