λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

[Python ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μŠ€νƒ/큐 > κΈ°λŠ₯개발

by Vada Kim 2021. 5. 6.
728x90
λ°˜μ‘ν˜•

programmers.co.kr/learn/courses/30/lessons/42586

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - κΈ°λŠ₯개발

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ νŒ€μ—μ„œλŠ” κΈ°λŠ₯ κ°œμ„  μž‘μ—…μ„ μˆ˜ν–‰ μ€‘μž…λ‹ˆλ‹€. 각 κΈ°λŠ₯은 진도가 100%일 λ•Œ μ„œλΉ„μŠ€μ— λ°˜μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 또, 각 κΈ°λŠ₯의 κ°œλ°œμ†λ„λŠ” λͺ¨λ‘ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— 뒀에 μžˆλŠ” κΈ°λŠ₯이 μ•žμ— μžˆλŠ”

programmers.co.kr

 

 

μ•Œκ³ λ¦¬μ¦˜ λ‚œμ΄λ„κ°€ μ–΄λ ΅μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ§κ΄€μ μœΌλ‘œ μ½”λ“œλ₯Ό μ§œλŠ”λ° 무리가 μ—†λ‹€!

def solution(progresses, speeds):
    answer = []
    progresses_c = progresses[:]
    speed_c = speeds[:]
    while progresses_c:
        cnt = 0
        getted = False
        #μž‘μ—…μ§„ν–‰
        progresses_c = [(progresses_c[idx]+speed_c[idx]) for idx in range(len(progresses_c))]
        while progresses_c:
            if progresses_c[0] >= 100: #001
                getted = True
                del progresses_c[0]
                del speed_c[0]
                cnt+=1
            else: break
        if getted: answer.append(cnt)
        
    return answer

 

1. 원본 데이터 보유λ₯Ό μœ„ν•΄ 인자λ₯Ό λ³΅μ‚¬ν–ˆλ‹€.

2. μž‘μ—… 배열이 μ‘΄μž¬ν• λ™μ•ˆλ§Œ μž‘μ—…νšŒμ°¨λ₯Ό λ°˜λ³΅ν•œλ‹€.

3. getted λ³€μˆ˜ μ‚¬μš© 이유: pop 된 μž‘μ—…μ΄ 1κ°œλΌλ„ 있으면 pop된 μž‘μ—… 개수λ₯Ό returnν•  배열에 appendμ‹œν‚¨λ‹€.

4. #001: μž‘μ—…μ˜ 0번째 μš”μ†Œκ°€ 100 이상이 μ•„λ‹ˆλ©΄ λ’€μ˜ μš”μ†Œλ“€μ€ 100이 λ„˜μ–΄λ„ pop될 수 μ—†μœΌλ―€λ‘œ μž‘μ—…λ°°μ—΄μ˜ 0번째 인덱슀만 νŒλ³„ν•œλ‹€.

728x90
λ°˜μ‘ν˜•