[ํ๋ก๊ทธ๋๋จธ์ค] Lv2. ๊ธฐ๋ฅ๊ฐ๋ฐ - ์คํ/ํ
๐ ๋ฌธ์ ๐
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