DevYoon

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ธฐ๋Šฅ๊ฐœ๋ฐœ (Python) ๋ณธ๋ฌธ

PS/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ธฐ๋Šฅ๊ฐœ๋ฐœ (Python)

gimewn 2022. 4. 22. 19:16

link ๐Ÿ”— https://programmers.co.kr/learn/courses/30/lessons/42586

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๊ธฐ๋Šฅ๊ฐœ๋ฐœ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํŒ€์—์„œ๋Š” ๊ธฐ๋Šฅ ๊ฐœ์„  ์ž‘์—…์„ ์ˆ˜ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๊ฐ ๊ธฐ๋Šฅ์€ ์ง„๋„๊ฐ€ 100%์ผ ๋•Œ ์„œ๋น„์Šค์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜, ๊ฐ ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ์†๋„๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋’ค์— ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์•ž์— ์žˆ๋Š”

programmers.co.kr

 

1๏ธโƒฃ left ๋ฐฐ์—ด์— ๋‚จ์€ ์ง„๋„์œจ(100-progress)๊ณผ ๊ฐœ๋ฐœ์†๋„๋ฅผ ๋‚˜๋ˆˆ ๊ฐ’์„ math.ceil๋กœ ์˜ฌ๋ฆผํ•ด์„œ ๋‹ด์•„์ค€๋‹ค.

2๏ธโƒฃ while๋ฌธ์„ ํ†ตํ•ด 1๋ฒˆ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ 0๋ฒˆ ์ธ๋ฑ์Šค๋ณด๋‹ค ์ž‘์œผ๋ฉด popํ•œ ํ›„ temp์— 1์”ฉ ๋”ํ•ด์ฃผ๊ณ , ๋งŒ์•ฝ 0๋ฒˆ ์ธ๋ฑ์Šค๊ฐ€ ๋” ์ž‘๋‹ค๋ฉด temp์— 1์„ ๋”ํ•œ ๊ฐ’(0๋ฒˆ ์ธ๋ฑ์Šค๊นŒ์ง€ ํฌํ•จ)์„ answer์— ์‚ฝ์ž…ํ•ด์ฃผ๊ณ , 0๋ฒˆ ์ธ๋ฑ์Šค๋ฅผ popํ•ด์ค€ ํ›„ idx์™€ temp๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

3๏ธโƒฃ ๋งŒ์•ฝ left์— ๋‚จ์€ ์›์†Œ๊ฐ€ ํ•˜๋‚˜๋ผ๋ฉด, temp์— 1์„ ๋”ํ•œ ๊ฐ’์„ answer์— ์‚ฝ์ž…ํ•ด์ฃผ๊ณ  while๋ฌธ์„ ๋ฉˆ์ถ˜๋‹ค.

 

import math
def solution(progresses, speeds):
    answer = []
    length = len(progresses)
    left = [0]*length
    for idx in range(length):
        left[idx] = math.ceil((100-progresses[idx])/speeds[idx])
    idx = 1
    temp = 0
    while True:
        if len(left) == 1:
            answer.append(temp+1)
            break
        if left[0] >= left[idx]:
            temp += 1
            left.pop(idx)
        elif left[0] < left[idx]:
            answer.append(temp+1)
            left.pop(0)
            idx = 1
            temp = 0
    return answer