https://programmers.co.kr/learn/courses/30/lessons/17678?language=python3
์ฝ๋ฉํ ์คํธ ์ฐ์ต - [1์ฐจ] ์ ํ๋ฒ์ค
10 60 45 [23:59,23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59] 18:00
programmers.co.kr
ํ์ด
์๊ทผํ ๊น๋ค๋ก์ ๋ ๋ฌธ์ ์ด๋ค.
ํผ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ฐ์ , ์๊ฐ์ ๋ชจ๋ ๋ถ ๋จ์๋ก ๋ณํํ ํ
๋ชจ๋ ํฌ๋ฃจ์์ ํ ๋ช
์ฉ ๋ฒ์ค์ ํ์ ๋ค.
ํ ๋ช
์ฉ ๋ฒ์ค์ ํ์ฐ๋ค๋ณด๋ฉด, ๋ง์ง๋ง ๋ฒ์ค์, ๋ง์ง๋ง ์ฌ๋์ด ์ธ์ ํ๋์ง๋ฅผ ์ ์ ์๋๋ฐ ๊ทธ ๊ฐ์ -1์ ํ ์๊ฐ์ ๋ฌธ์์ด๋ก ๋ฐํํ๋ฉด ๋๋ค.
๋ง์ฝ ๋ง์ง๋ง ๋ฒ์ค์ ์ ๋ถ ํ์ง ์์๋ค๋ฉด, ๋ง์ง๋ง ๋ฒ์ค ์๊ฐ์ ๋ฆฌํดํ๋ฉด ๋๋ค.
def solution(n, t, m, timetable):
answer = ''
crew = [ int(tt.split(":")[0])*60+int(tt.split(":")[1]) for tt in timetable ]
# ํฌ๋ฃจ์ ๋์ฐฉ์๊ฐ
crew.sort()
# bus[x] = (๋ฒ์ค์๊ฐ, ์น๊ฐ ์, ๋ง์ง๋ง ํ ํฌ๋ฃจ์ ๋์ฐฉ์๊ฐ)
bus = [ (540+t*i, 0, None) for i in range(n)]
bidx, cidx = 0, 0
while cidx < len(crew):
c = crew[cidx]
if bidx == len(bus):
break
if c <= bus[bidx][0] and bus[bidx][1] < m:
tt, cnt, _ = bus[bidx]
bus[bidx] = (tt, cnt+1, c)
cidx += 1
else:
bidx += 1
ret = bus[-1][0]
if bus[-1][2]:
if bus[-1][1] == m:
ret = bus[-1][2] - 1
return '%02d:%02d' % (ret // 60, ret % 60)'Problem Solving ๐ฅ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] ๊ธธ ์ฐพ๊ธฐ ๊ฒ์ / ํ์ด์ฌ / ์๋ฃ๊ตฌ์กฐ(ํธ๋ฆฌ) (0) | 2021.02.12 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] ์คํ ์์ด / ํ์ด์ฌ (0) | 2021.02.12 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ซ์ ๊ฒ์ / ํ์ด์ฌ / (์ ๋ ฌ, ์ด์ง ํ์) (0) | 2021.01.30 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ๋ฐฐ๋ฌ / ํ์ด์ฌ / (๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ) (0) | 2021.01.29 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ๊ธฐ์ง๊ตญ ์ค์น / ํ์ด์ฌ (0) | 2021.01.29 |