์ฝ”ํ…Œ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Lv2. ๊ธฐ๋Šฅ๊ฐœ๋ฐœ - ์Šคํƒ/ํ

sueeee-e 2025. 2. 7. 12:10

๐Ÿ”…๋ฌธ์ œ๐Ÿ”…

 

progresses๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ž‘์—…์ด ๋˜์–ด์•ผ ํ•ด์„œ

์ฒซ๋ฒˆ์งธ ์ž‘์—… 93ํ”„๋กœ ์™„๋ฃŒ, ๋‚จ์€ 7ํ”„๋กœ๋ฅผ 1 ์†๋„๋ฅผ ํ†ตํ•ด ํ•œ๋‹ค๋ฉด 7์ผ ์†Œ์š”,

๋‘๋ฒˆ์งธ ์ž‘์—… 30ํ”„๋กœ ์™„๋ฃŒ, ๋‚จ์€ 70ํ”„๋กœ๋ฅผ 30์†๋„๋กœ ํ•˜๋ฉด 3์ผ ์†Œ์š”,

์„ธ๋ฒˆ์žฌ ์ž‘์—…๋„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ 9์ผ ์†Œ์š”๋œ๋‹ค. 

 

[7, 3, 9] ๋‘๋ฒˆ์งธ ์ž‘์—…์ด ๋จผ์ € ๋๋‚ฌ๋”๋ผ๋„ ์ฒซ๋ฒˆ์งธ ์ž‘์—…์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์•„ ๋ฐฐํฌ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํ™ฉ

7์ผ์งธ์— ์ฒซ๋ฒˆ์งธ, ๋‘๋ฒˆ์งธ ์ž‘์—… ๋ฐฐํฌ -> 2

9์ผ์งธ์— ์„ธ๋ฒˆ์งธ ์ž‘์—… ๋ฐฐํฌ -> 1

 

์ตœ์ข… ์ถœ๋ ฅ : [2, 1]

 

 

 

๐Ÿ‘พํ•ด๊ฒฐ๊ณผ์ •๐Ÿ‘พ

 

๋จผ์ € ์†Œ์š” ๊ธฐ๊ฐ„์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ›์•„๋ณด๊ณ ์ž ์•„๋ž˜์ฒ˜๋Ÿผ ์ž‘์„ฑํ•˜์˜€๋‹ค. 99๋กœ ํ•œ ์ด์œ ๋Š” ๋”ฑ๋งž๋Š” ๊ธฐ๊ฐ„๊นŒ์ง€ +1๋กœ ์˜ฌ๋ฆผํ•˜๊ณ ์ž ํ•จ

*์˜ฌ๋ฆผ : ceil()

for i in range(0, len(speeds)):
        answer.append((99 - progresses[i]) //speeds[i] +1)

 

๊ทธ๋ฆฌ๊ณ  ๋‘ ๊ฐœ์˜ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด์„œ 

์ฒซ๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ(i)์—์„œ๋Š” count =1 ๋กœ ํ•ญ์ƒ ์ดˆ๊ธฐํ™”ํ•˜๊ณ 

๋‘๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ(j)์—์„œ๋Š” j๋ฅผ 1์”ฉ ์˜ฌ๋ ค๊ฐ€๋ฉฐ i๊ฐ’๊ณผ ๋น„๊ตํ•˜๋ฉด์„œ i๋ณด๋‹ค j๊ฐ€ ๊ฐ™๊ฑฐ๋‚˜ ์ž‘์œผ๋ฉด count๋ฅผ +1 ํ•ด์ค€๋‹ค.

๊ทธ๋ฆฌ๊ณ  i๊ฐ’์€ j ์œ„์น˜๋กœ ์ด๋™์‹œํ‚จ๋‹ค.

 

def solution(progresses, speeds):
    answer = []
    arr = []
    for i in range(0, len(speeds)):
        answer.append((99 - progresses[i]) //speeds[i] +1)
    i = 0
    while i < len(answer):
        count = 1
        j = i + 1
        while j < len(answer) and answer[i] >= answer[j]:
            count += 1
            j += 1
        arr.append(count)
        i = j
    return arr

 

์ด๋ ‡๊ฒŒ ํ•ด์„œ ํ•ด๊ฒฐํ•˜์˜€๋Š”๋ฐ ์‚ฌ์‹ค ์ด ๋ฌธ์ œ๋Š” ์Šคํƒ/ํ ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜๋„ํ•œ ๋ฐ”์™€ ๋‹ค๋ฅด๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ‘ผ ๊ฒƒ์ด๋‹ค. 

(์‹œ๊ฐ„๋ณต์žก๋„๋„ ๋†’๊ฒŒ ๋‚˜์˜ด)

 

 

๊ฐ™์€ ๋กœ์ง์œผ๋กœ ํ๋ฅผ ์ด์šฉํ•ด์„œ ํ’€์–ด๋ณด์ž

from collections import deque

def solution(progresses, speeds):
	answer =[]
    days = deque()
    
    for i in range(len(progresses)):
    	days.append((100 - progresses[i] + speeds[i] - 1) // speeds[i])
    
    while days:
    	count = 1
        first = days.popleft() #์ฒซ๋ฒˆ์งธ ์†Œ์š”๊ธฐ๊ฐ„
        
        while days and first >= days[0]:# ๊ฐ™์€ ๋ฐฐํฌ์ผ์— ํ•จ๊ป˜ ๋ฐฐํฌ
        	count += 1
            days.popleft()
        
        answer.append(count)
	return answer