λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» DEV/γ„΄ problems

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μŠ€νƒ/큐(Stack/Queue): κΈ°λŠ₯개발

by vodkassi 2021. 5. 7.
728x90

문제 μ„€λͺ…

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ νŒ€μ—μ„œλŠ” κΈ°λŠ₯ κ°œμ„  μž‘μ—…μ„ μˆ˜ν–‰ μ€‘μž…λ‹ˆλ‹€. 각 κΈ°λŠ₯은 진도가 100%일 λ•Œ μ„œλΉ„μŠ€μ— λ°˜μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 또, 각 κΈ°λŠ₯의 κ°œλ°œμ†λ„λŠ” λͺ¨λ‘ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— 뒀에 μžˆλŠ” κΈ°λŠ₯이 μ•žμ— μžˆλŠ” κΈ°λŠ₯보닀 λ¨Όμ € 개발될 수 있고, μ΄λ•Œ 뒀에 μžˆλŠ” κΈ°λŠ₯은 μ•žμ— μžˆλŠ” κΈ°λŠ₯이 배포될 λ•Œ ν•¨κ»˜ λ°°ν¬λ©λ‹ˆλ‹€. λ¨Όμ € λ°°ν¬λ˜μ–΄μ•Ό ν•˜λŠ” μˆœμ„œλŒ€λ‘œ μž‘μ—…μ˜ 진도가 적힌 μ •μˆ˜ λ°°μ—΄ progresses와 각 μž‘μ—…μ˜ 개발 속도가 적힌 μ •μˆ˜ λ°°μ—΄ speedsκ°€ μ£Όμ–΄μ§ˆ λ•Œ 각 λ°°ν¬λ§ˆλ‹€ λͺ‡ 개의 κΈ°λŠ₯이 λ°°ν¬λ˜λŠ”μ§€λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•˜μ„Έμš”.

 


μ œν•œ 사항

- μž‘μ—…μ˜ κ°œμˆ˜(progresses, speedsλ°°μ—΄μ˜ κΈΈμ΄)λŠ” 100개 μ΄ν•˜μž…λ‹ˆλ‹€.
- μž‘μ—… μ§„λ„λŠ” 100 λ―Έλ§Œμ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.
- μž‘μ—… μ†λ„λŠ” 100 μ΄ν•˜μ˜ μžμ—°μˆ˜μž…λ‹ˆλ‹€.
- λ°°ν¬λŠ” ν•˜λ£¨μ— ν•œ λ²ˆλ§Œ ν•  μˆ˜ μžˆμœΌλ©°, ν•˜λ£¨μ˜ λμ— μ΄λ£¨μ–΄μ§„λ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. μ˜ˆλ₯Ό λ“€μ–΄ μ§„λ„μœ¨μ΄ 95%인 μž‘μ—…μ˜ κ°œλ°œ μ†λ„κ°€ ν•˜λ£¨μ— 4%라면 λ°°ν¬λŠ” 2일 λ’€μ— μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€.

 


μž…μΆœλ ₯ 예

 

Progresses Speeds Return
[93, 30, 55]  [1, 30, 5]   [2, 1]
[95, 90, 99, 99, 80, 99] [1, 1, 1, 1, 1, 1]   [1, 3, 2]

 


μž…μΆœλ ₯ 예 μ„€λͺ…

- μž…μΆœλ ₯ μ˜ˆ #1
* μ²« λ²ˆμ§Έ κΈ°λŠ₯은 93% μ™„λ£Œλ˜μ–΄ μžˆκ³  ν•˜λ£¨μ— 1%μ”© μž‘업이 κ°€λŠ₯ν•˜λ―€λ‘œ 7일간 μž‘μ—… ν›„ λ°°ν¬κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.
* λ‘ λ²ˆμ§Έ κΈ°λŠ₯은 30%κ°€ μ™„λ£Œλ˜μ–΄ μžˆκ³  ν•˜λ£¨μ— 30%μ”© μž‘업이 κ°€λŠ₯ν•˜λ―€λ‘œ 3일간 μž‘μ—… ν›„ λ°°ν¬κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ΄μ „ μ²« λ²ˆμ§Έ κΈ°λŠ₯이 μ•„직 μ™„μ„±λœ μƒνƒœκ°€ μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— μ²« λ²ˆμ§Έ κΈ°λŠ₯이 λ°°ν¬λ˜λŠ” 7일째 λ°°ν¬λ©λ‹ˆλ‹€.
* μ„Έ λ²ˆμ§Έ κΈ°λŠ₯은 55%κ°€ μ™„λ£Œλ˜μ–΄ μžˆκ³  ν•˜λ£¨μ— 5%μ”© μž‘업이 κ°€λŠ₯ν•˜λ―€λ‘œ 9일간 μž‘μ—… ν›„ λ°°ν¬κ°€ κ°€λŠ₯ν•©λ‹ˆλ‹€.
* λ”°λΌμ„œ 7일째에 2개의 κΈ°λŠ₯, 9일째에 1개의 κΈ°λŠ₯이 λ°°ν¬λ©λ‹ˆλ‹€.

- μž…μΆœλ ₯ μ˜ˆ #2
* λͺ¨λ“  κΈ°λŠ₯이 ν•˜λ£¨μ— 1%μ”© μž‘업이 κ°€λŠ₯ν•˜λ―€λ‘œ, μž‘업이 λλ‚˜κΈ°κΉŒμ§€ λ‚¨μ€ μΌμˆ˜λŠ” κ°κ° 5일, 10일, 1일, 1일, 20일, 1μΌμž…λ‹ˆλ‹€. μ–΄λ–€ κΈ°λŠ₯이 λ¨Όμ € μ™„μ„±λ˜μ—ˆλ”λΌλ„ μ•žμ— μžˆλŠ” λͺ¨λ“  κΈ°λŠ₯이 μ™„μ„±λ˜μ§€ μ•ŠμœΌλ©΄ λ°°ν¬κ°€ λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.
* λ”°λΌμ„œ 5일째에 1개의 κΈ°λŠ₯, 10일째에 3개의 κΈ°λŠ₯, 20일째에 2개의 κΈ°λŠ₯이 λ°°ν¬λ©λ‹ˆλ‹€.

 

 

λ‚˜μ˜ μ†”λ£¨μ…˜

 

from collections import deque 

def solution(progresses, speeds):

    progresses = deque(progresses)
    speeds = deque(speeds)
    answer = []

    while len(progresses) > 0:
        for i in range(len(progresses)):
            progresses[i] = progresses[i] + speeds[i]

        count = 0
        while True:
            if len(progresses) > 0:
                if progresses[0] >= 100:
                    progresses.popleft() 
                    speeds.popleft() 
                    count += 1
                else:
                    break
            else: break

        if (count>0):
            answer.append(count)


    return answer

λŒ“κΈ€