https://school.programmers.co.kr/learn/courses/30/lessons/42586#
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋๋ ์์ ์ ์งํ๊ณ ๋นํจ์จ์ ์ผ๋ก ํ์๋ค.
์ธํ ๋ฒ์๊ฐ 100 ์ดํ๋ก ๋งค์ฐ ์์์ ๋ณ ์ ๊ฒฝ ์ ์ฐ๊ธฐ๋ ํ๊ณ , ๊ทธ๋ฅ ํด๋ ํ์ด์ง๊ธด ํ๊ธธ๋ ๊น์ด ์๊ฐ์ ์ ํด๋ณด๊ธฐ๋ ํ๋ค.
๊ทธ๋์ ์ผ๋ฅธ ํ๊ณ ์ ์ถํ๊ณ ๋์ ๋ค๋ฅธ ๋ถ๋ค์ ์ฌ๋ฌ ํ์ด๋ฅผ ์ฝ์ด๋ณด์๋ค.
์ผ๋จ ๋์ฒ๋ผ 1. ๋ฐฐํฌ ์ผ์๋ฅผ ๊ณ์ฐ 2. ๋ฐฐํฌ์ํค๊ธฐ ์ด๋ ๊ฒ ๋ ๋จ๊ณ๋ก ๋๋ ์ฌ๋์ ๊ฑฐ์ ์์๊ณ ,
๋ฐฐํฌ ์ผ์๋ฅผ ๊ณ์ฐํ๋ฉด์ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํด์ง๋ฉด ๋ฐ๋ก ๋ฐฐํฌํด์ฃผ๋ ํ์ด๊ฐ ์๋์ ์ผ๋ก ๋ง์๋ค.
๋ฌธ์ ์ ํ์ ์คํ/ํ๋ผ๊ณ ๋๋๊ณ ์ ํ์๋๋ฐ๋ ๋ฌด์ํ๊ฒ ๊ทธ๋ฅ ํ์์ผ๋ ๋น์ฐํ ๊ฒ ๊ฐ๋ค. ํฟ
์ฝ๊ฐ์ ๋ฐ์ฑ์ ํ๋ฉด์ ์ฝ๋๋ฅผ ๋ค์ ์์ฑํด๋ณด์๋ค
์ฒ์ ์ ์ถํ ์ฝ๋
def solution(progresses, speeds):
n = len(progresses)
answer = []
complete = [0]*n # progress๋ณ ๋ฐฐํฌ์ผ ๊ธฐ๋ก
check = 0 # ๋ฐฐํฌ ์๋ฃ๋ progress ๊ฐ์
days = 1 # ๊ฒฝ๊ณผ ์ผ์
while check < n: # ๋ชจ๋ ๋ฐฐํฌ ์๋ฃ๋ ๋๊น์ง ๋ฐ๋ณต
for i in range(n):
if progresses[i] >= 100:
continue
progresses[i] += speeds[i]
if progresses[i] >= 100:
complete[i] = days
check += 1
days += 1
# ์ฐจ๋ก๋๋ก ๋ฐฐํฌ
prev = complete[0]
idx = 1
cnt = 1
while idx < n:
if complete[idx] <= prev:
cnt += 1
else:
answer.append(cnt)
cnt = 1
prev = complete[idx]
idx += 1
if cnt > 0:
answer.append(cnt)
return answer
๋ค๋ฅธ ๋ถ ํ์ด ์ฐธ๊ณ ํ์ฌ ์์ ํ ์ฝ๋
from collections import deque
def solution(progresses, speeds):
progresses = deque(progresses)
speeds = deque(speeds)
answer = []
days = 0
cnt = 0
while progresses:
if progresses[0] + days*speeds[0] >= 100:
progresses.popleft()
speeds.popleft()
cnt += 1
else:
if cnt > 0:
answer.append(cnt)
cnt = 0
days += 1
answer.append(cnt)
return answer
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (0) | 2023.06.07 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ก์ธ์ค (0) | 2023.06.06 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํคํจ๋ ๋๋ฅด๊ธฐ (0) | 2023.05.26 |
[softeer] ๋น๋ฐ ๋ฉ๋ด (0) | 2023.05.25 |
[softeer] GBC (0) | 2023.05.18 |