๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/DP

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]ํ˜ธํ…” ๋Œ€์‹ค

by syLim___ 2023. 6. 22.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/155651#

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


 

์–ด๋–ค ๋ฐฉ์—์„œ ๋งˆ์ง€๋ง‰ ์†๋‹˜์ด ํ‡ด์‹ค ํ›„, ์ฒญ์†Œ๊นŒ์ง€ ๋๋‚œ ์‹œ๊ฐ„์„ ๊ทธ ๋ฐฉ์˜ available time์ด๋ผ๊ณ  ํ•˜์ž.

 

๊ฐ ๋ฐฉ์˜ available time์„ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด rooms ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

 

 

์†๋‹˜์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ์‹ค์ด ์žˆ์œผ๋ฉด, ๊ทธ ๊ฐ์‹ค์˜ available time์„ ์ƒˆ๋กœ์šด ์†๋‹˜์˜ ์‹œ๊ฐ„์œผ๋กœ updateํ•ด์ค€๋‹ค.

์—†๋‹ค๋ฉด, ์ƒˆ๋กœ์šด ๊ฐ์‹ค์„ ์ถ”๊ฐ€ํ•˜๊ณ  available time์„ ๊ธฐ๋กํ•œ๋‹ค.

 

 

python

def solution(book_time):
    answer = 0
    # ํ‡ด์‹ค ํ›„ ์ฒญ์†Œ์‹œ๊ฐ„ 10๋ถ„
    # ์ฝ”๋‹ˆ์—๊ฒŒ ํ•„์š”ํ•œ ์ตœ์†Œ ๊ฐ์‹ค์˜ ์ˆ˜๋ฅผ ๋ฆฌํ„ด
    
    book_time.sort()
    rooms = ["00:00"] # ๋ฐฉ๋งˆ๋‹ค ์ข…๋ฃŒ์‹œ๊ฐ„์„ ์ €์žฅ
    
    for time in book_time:
        start, end = time
        
        # ์ฒญ์†Œ๊นŒ์ง€ ์™„๋ฃŒํ•œ ์‹œ๊ฐ„ ๊ณ„์‚ฐ
        if int(end[3:]) <= 49:
            end = end[:3] + str(int(end[3:])+10)
        else:
            end = str(int(end[:2])+1).zfill(2) + ':' + str((int(end[3:])+10)%60).zfill(2)
        
        # ์†๋‹˜ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ์‹ค์ด ์žˆ๋‹ค๋ฉด
        if start >= min(rooms):
            # update
            idx = rooms.index(min(rooms))
            rooms[idx] = end
        # ์—†์œผ๋ฉด ๋ฐฉ ๊ฐœ์ˆ˜ ๋Š˜๋ฆฌ๊ธฐ
        else:
            rooms.append(end)  
    return len(rooms)

 

 

 

728x90