기능개발 문제 바로가기

나의 풀이

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

    for p, s in zip(progresses, speeds):
        days.append(math.ceil((100-p)/s))
    print(days)

    count = 1
    temp = days[0]

    for i in range(1,len(days)):
        if temp < days[i]:
            answer.append(count)
            count = 1
            temp = days[i]
        else:
            count += 1
    return answer + [count]

고수의 풀이

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]

CODE REVIEW

  1. zip()을 이용해서 각 과정 별 소요시간을 계산하고, 비교를 통해 답을 구해나가는 문제!
  2. 고수의 풀이에서는 math.ceil 사용하지 않고 -((p-100)//s)을 통해 올림을 구현했다. 근데 웬만하면 math.ceil 사용하자 ㅋㅋㅋ