programmers | Lv2. ๊ธฐ๋Šฅ๊ฐœ๋ฐœ [Python]

yeonkยท2022๋…„ 3์›” 14์ผ
0

algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
70/88
post-thumbnail

๐Ÿ’ก Python 3






๐Ÿ”— ๋ฌธ์ œ

๊ธฐ๋Šฅ๊ฐœ๋ฐœ [Link]






๐Ÿ’ป ์ฝ”๋“œ

def solution(progresses, speeds):
    from math import ceil
    answer = []
    days = [ceil((100 - p)/speeds[i]) for i, p in enumerate(progresses)]
    
    for i, d in enumerate(days):
        if i == 0: cur, count = d, 1
        elif cur >= d: count += 1
        else:
            answer.append(count)
            count, cur = 1, d
        
        if i + 1 == len(days): answer.append(count)
    return answer






๐Ÿ’ฅ ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ฝ”๋“œ

ceil์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด์„œ zipํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํšจ์œจ์„ ๋†’์ธ ์ฝ”๋“œ

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]



๊ฐœ์ธ์ ์œผ๋กœ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ ์ข‹์•˜๋˜ ์ฝ”๋“œ

def solution(progresses, speeds):
    answer = []
    time = 0
    count = 0
    while len(progresses)> 0:
        if (progresses[0] + time*speeds[0]) >= 100:
            progresses.pop(0)
            speeds.pop(0)
            count += 1
        else:
            if count > 0:
                answer.append(count)
                count = 0
            time += 1
    answer.append(count)
    return answer

0๊ฐœ์˜ ๋Œ“๊ธ€