๋ฐฑ์ค€ & ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Stack & Queue

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Stack/Queue level2 ๊ธฐ๋Šฅ๊ฐœ๋ฐœ

_cactus 2022. 3. 23. 19:15
๋ฐ˜์‘ํ˜•

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ์ฝ”๋”ฉ์—ฐ์Šต ์ค‘ level2์˜ stack/queue ์นดํ…Œ๊ณ ๋ฆฌ์˜ "๊ธฐ๋Šฅ๊ฐœ๋ฐœ" ๋ฌธ์ œ ํ’€์ด

(๋ฌธ์ œ : ์•„๋ž˜ ๋งํฌ๐Ÿ‘‡๐Ÿ‘‡๐Ÿ‘‡)

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๋ฌธ์ œํ’€์ด

์ด ๋ฌธ์ œ๋Š” ์ฒ˜์Œ์—๋Š” ๊ต‰์žฅํžˆ ์‰ฌ์›Œ๋ณด์ด๋‚˜, ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ์žก์ง€ ๋ชปํ•˜๋ฉด ๊ณ„์† ํ•ด๋งฌ ์ˆ˜ ์žˆ๋‹ค.

 

์ •ํ™•์„ฑ์„ ๋‹ค ์žก์ง€ ๋ชปํ•˜์‹  ๋ถ„๋“ค์€ ๋‹ค์Œ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ์ฐธ๊ณ ๋ฐ”๋ž€๋‹ค. 

 

โ€ผ๏ธํ•ต์‹ฌ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค

progresses = [90,90,90,90,90,90]
speeds = [10,10,10,1,10,1]
๋ฐ˜์‘ํ˜•

์œ„ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์˜ ๊ฒฝ์šฐ ์ž‘์—…์ด ๋๋‚˜๊ธฐ๊นŒ์ง€ ๋‚จ์€ ์ผ์ˆ˜๋Š” ๊ฐ๊ฐ 1์ผ, 1์ผ, 1์ผ, 10์ผ, 1์ผ, 10์ผ์ด๋‹ค.

๋”ฐ๋ผ์„œ 1์ผ์งธ์— 3๊ฐœ์˜ ๊ธฐ๋Šฅ, 10์ผ์งธ์— 3๊ฐœ์˜ ๊ธฐ๋Šฅ์ด ๋ฐฐํฌ๋œ๋‹ค. 

์ฆ‰, [3,3]์„ return ํ•ด์•ผํ•œ๋‹ค.

์•„๋ž˜๋Š” ๋‚˜์˜ ์ฝ”๋“œ์ด๋‹ค.

stack์— '์ž‘์—…์ด ๋๋‚˜๊ธฐ๊นŒ์ง€ ๋‚จ์€ ์ผ์ˆ˜(๋ณ€์ˆ˜ days)'๋ฅผ push, popํ•˜๋ฉด์„œ ๊ฐ ์ผ์ž์— ๋ฐฐํฌํ•ด์•ผํ•˜๋Š” ๊ธฐ๋Šฅ๊ฐœ์ˆ˜๋ฅผ res ๋ฐฐ์—ด์— ๋‹ด์•„์ค€๋‹ค.

######### ์ •ํ™•์„ฑ 100% #########
from math import ceil
def solution(progresses, speeds):
    res = []
    stack = [ceil((100-progresses[0])/speeds[0])]
    res = []
    for i in range(1,len(progresses)) :
        days = (100-progresses[i])/speeds[i]
        if (len(stack) != 0) and (days <= stack[0]) :
            stack.append(days)
        else :
            res.append(len(stack))
            stack = [days]
    res.append(len(stack))
    return res

 

๋‚ด๊ฐ€ ์ œ์‹œํ•œ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์™€ ์ฝ”๋“œ๊ฐ€ ๋„์›€์ด ๋๊ธฐ๋ฅผ ๋ฐ”๋ผ๋ฉด์„œ..!! ๋งˆ์นœ๋‹ค ๐Ÿ˜Š

728x90
๋ฐ˜์‘ํ˜•