๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ’ป๐Ÿ’ญ๐ŸŽง๐ŸŒ

BOJ 11000 : ๊ฐ•์˜์‹ค ๋ฐฐ์ • (Python) ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€ ํ’€์ด

BOJ 11000 : ๊ฐ•์˜์‹ค ๋ฐฐ์ • (Python)

adorableco 2023. 2. 15. 16:47
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

https://www.acmicpc.net/problem/11000

 

11000๋ฒˆ: ๊ฐ•์˜์‹ค ๋ฐฐ์ •

์ฒซ ๋ฒˆ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 200,000) ์ดํ›„ N๊ฐœ์˜ ์ค„์— Si, Ti๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (0 ≤ Si < Ti ≤ 109)

www.acmicpc.net

 

 

์ฝ”๋“œ

import sys
import heapq
n = int(sys.stdin.readline())

array = []

for i in range(n):
    array.append(list(map(int, sys.stdin.readline().split())))

array.sort()

room = []
heapq.heappush(room,array[0][1])

for i in range(1,n):
    if array[i][0] < room[0]:
        heapq.heappush(room, array[i][1])

    else:
        heapq.heappop(room)
        heapq.heappush(room, array[i][1])
        
print(len(room))

 

 

ํ’€์ด

์ฒ˜์Œ์—” ๋ฆฌ์ŠคํŠธ๋กœ ๋ฌด์ž‘์ • ํ’€๋‹ค๊ฐ€ ์‹œ๊ฐ„์ดˆ๊ณผ๋กœ ์ธํ•ด ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.

์šฐ์„  ์ˆœ์œ„ ํ๋ฅผ ์ด์šฉํ•ด์„œ ํ‘ธ๋‹ˆ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค!

 

๋จผ์ € ๊ฐ•์˜ ์‹œ์ž‘, ์ข…๋ฃŒ ์‹œ๊ฐ„์„ array ๋ผ๋Š” ๋ฐฐ์—ด ๋‹ด์•„์„œ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.

→ 2์ฐจ์› ๋ฐฐ์—ด์—์„œ sort๋ฅผ ํ•˜๋ฉด 0๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ๋จผ์ € ํ•˜๋Š” ๊ฒƒ์ด ๋””ํดํŠธ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

 

ex. array = [[1,5], [3,2], [3,1], [5,1], [1,2]] ์—์„œ array.sort()๋ฅผ ์‹คํ–‰ํ•˜๋ฉด array = [[1,2], [1,5], [3,1], [3,2], [5,1]]

 

room ์ด๋ผ๋Š” ํž™์„ ๋งŒ๋“ค์–ด์„œ ๋จผ์ € ์ฒซ๋ฒˆ์งธ ๊ฐ•์˜์˜ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ ๋„ฃ๋Š”๋‹ค.

 

for ๋ฌธ ๋‚ด์—์„œ๋Š”,

i ๋ฒˆ์งธ ๊ฐ•์˜์˜ ์‹œ์ž‘ ์‹œ๊ฐ„์ด ํ˜„์žฌ ํž™ (room) ๋‚ด์— ์žˆ๋Š” ์ˆ˜์—…์˜ ์ข…๋ฃŒ ์‹œ๊ฐ„๋ณด๋‹ค ์ด๋ฅธ ๊ฒฝ์šฐ์—๋Š” ์ƒˆ๋กœ์šด ๊ฐ•์˜์‹ค์„ ๋งŒ๋“ ๋‹ค๋Š” ์˜๋ฏธ๋กœ, ํž™์— i ๋ฒˆ์งธ ๊ฐ•์˜์˜ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ ์ถ”๊ฐ€ ํ•œ๋‹ค.

 

i ๋ฒˆ์งธ ๊ฐ•์˜์˜ ์‹œ์ž‘ ์‹œ๊ฐ„์ด ํ˜„์žฌ ํž™ (room) ๋‚ด์— ์žˆ๋Š” ์ˆ˜์—…์˜ ์ข…๋ฃŒ ์‹œ๊ฐ„๋ณด๋‹ค ๋‚˜์ค‘์ธ ๊ฒฝ์šฐ์—๋Š” ๊ฐ™์€ ๊ฐ•์˜์‹ค์—์„œ ์ˆ˜์—…์„ ์ง„ํ–‰ํ•œ๋‹ค๋Š” ์˜๋ฏธ๋กœ, ํž™์— ์žˆ๋˜ ์ˆ˜์—…์˜ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ ์—†์•ค ๋’ค i ๋ฒˆ์งธ ๊ฐ•์˜์˜ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ ๋„ฃ์–ด ์ค€๋‹ค. 

 

if array[i][0] < room[0]:
        heapq.heappush(room, array[i][1])

ํž™ ๋‚ด์—์„œ๋Š” ์ž‘์€ ์ˆœ์œผ๋กœ ์ •๋ ฌ ๋ผ ์žˆ์œผ๋ฏ€๋กœ room[0] ๊ณผ ๋น„๊ตํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. 

 

 

 

 

 

 

 

์‹œ๊ฐ„์ดˆ๊ณผํ•œ ์ฝ”๋“œ

ํ‹€๋ฆฐ ๋ถ€๋ถ„์€ ์—†์„ ๊ฒƒ ๊ฐ™๊ธด ํ•˜๋‹ค.. (๋ชจ๋ฆ„)

import sys
n = int(sys.stdin.readline())

array = []

array.append(list(map(int, sys.stdin.readline().split())))

room = 1

for i in range(1,n):
    start, end = map(int, sys.stdin.readline().split())
    check = 0
    for j in range(len(array)):
        check += 1
        if array[j][1] <= start:
            array[j][0] = start
            array[j][1] = end
            break
    if check != i:
        room += 1
        array.append([start,end])
        
print(len(array))
๋ฐ˜์‘ํ˜•