๐ ๋ฌธ์ ๋ถ์
ํ ๊ฐ์ ํ์์ค์ด ์๋ค.
n๊ฐ์ ํ์์ ๋ํด์ ํ์์ค ์ฌ์ฉํ๋ฅผ ๋ง๋ค๋ ค๊ณ ํ๋ค.
๊ฐ ํ์์ ๋ํด ์์ ์๊ฐ๊ณผ ๋๋๋ ์๊ฐ์ด ์ฃผ์ด์ง๋ค.
ํ์๊ฐ ๊ฒน์น์ง ์๊ฒ ํ๋ฉด์ ํ์์ค์ ์ฌ์ฉํ ์ ์๋ ํ์์ ์ต๋ ๊ฐ์๋ฅผ ์ฐพ์์ผ ํ๋ค.
๐ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ
๋๋๋ ์๊ฐ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
meeting = []์ ์
for i in range(1,n):
if start[i] ≥ end[i]:
numner_meeting +=1
๐ ์ฝ๋
import sys
n= int(input())
meeting = []
for _ in range(n):
start, end = map(int,input().split())
meeting.append((start,end))
# ์ข
๋ฃ์๊ฐ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ณ , ์์์๊ฐ์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
meeting = sorted(meeting, key = lambda x: (x[1], x[0]))
end_time = meeting[0][1]
number_meeting = 1 # ์ฒซ๋ฒ์งธ ํ์๋ ํ์์ ์ผ๋ก ์ ํํ๋ค. ๊ทธ๋ฆฌ๊ณ 2๋ฒ์งธ ํ์๋ถํฐ ๋น๊ต.
for i in range(1,n): # 0๋ฒ์งธ ๊ฐ์๋ ๋ฌด์กฐ๊ฑด ๋ฝํ๋๊น ์ฒซ๋ฒ์งธ ๊ฐ์๋ถํฐ ๋น๊ต
if end_time <= meeting[i][0]: # end_time์ด ๊ฐ์ ์์ ์๊ฐ๋ณด๋ค ์์ผ๋ฉด
end_time = meeting[i][1]
number_meeting +=1
print(number_meeting)
๐ ์๊ฐ๋ณต์ก๋
O(NlogN)
๐ ํ๋ฆฐ ์ด์
์ ๊ทผ ๋ฐฉ์์ด ํ๋ฆผ
๐ ํ๋ฆฐ ๋ถ๋ถ ์์ or ๋ค๋ฅธ ํ์ด
๊ฐ์ฅ ๋ง์ ํ์์ ์๋ฅผ ์๊ธฐ ์ํด์๋ ๋นจ๋ฆฌ ๋๋๋ ํ์ ์์๋๋ก ์ ๋ ฌํด์ผ ํ๋ค.
์ฒซ๋ฒ์งธ ํ์๋ ํ์์ ์ด๊ธฐ ๋๋ฌธ์, number_meeting = 1 ๋ก ์ ํด์ค๋ค.
๐ ๋๋์ or ๊ธฐ์ตํ ์ ๋ณด
sort ํจ์์ sorted ํจ์์ ์๊ฐ๋ณต์ก๋๋ O(NlogN)์ด๋ค.
๊ฐ์ฅ ๋ง์ ํ์์ ์๋ฅผ ์๊ธฐ ์ํด์๋ ๋นจ๋ฆฌ ๋๋๋ ํ์ ์์๋๋ก ์ ๋ ฌํด์ผ ํ๋ค.
์ฒซ๋ฒ์งธ ์กฐ๊ฑด์ด ๋ฌด์กฐ๊ฑด ํฌํจ๋๋์ง ์๋์ง๋ฅผ ๊ตฌ๋ณํ์.
'๋ฐฑ์ค | Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค][11047] ๋์ 0 | ํ์ด์ฌ | ๊ทธ๋ฆฌ๋(Greedy) (0) | 2024.05.23 |
---|---|
[๋ฐฑ์ค][12845] ๋ชจ๋์ ๋ง๋ธ | ํ์ด์ฌ | ๊ทธ๋ฆฌ๋(Greedy) (0) | 2024.05.22 |
[๋ฐฑ์ค][11399] ATM | ํ์ด์ฌ (0) | 2024.05.21 |
[๋ฐฑ์ค][11724] ์ฐ๊ฒฐ ์์์ ๊ฐ์ | ํ์ด์ฌ (0) | 2024.05.16 |
[๋ฐฑ์ค][1260] DFS์ BFS | ํ์ด์ฌ (0) | 2024.05.13 |