ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

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

 

๋ฌธ์ œ์ž…๋‹ˆ๋‹ค

 

 

 

ํ•œ๊ฐœ์˜ ํšŒ์˜์‹ค์— ์ตœ๋‹ค ํšŒ์˜๊ฐ€ ์ง„ํ–‰๋˜๋„๋ก ์‹œ๊ฐ„ํ‘œ๋ฅผ ์ž‘์„ฑํ•˜๋ผ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋กœ ์‹œ์ž‘์‹œ๊ฐ„๊ณผ ๋์‹œ๊ฐ„์ด ๊ฐ™์„ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

 

์ž…์ถœ๋ ฅ ์กฐ๊ฑด๊ณผ ํžŒํŠธ๋Š” ์ด๋Ÿฌํ•ฉ๋‹ˆ๋‹ค.

 

 

 

 

ํšŒ์˜๋ฅผ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ์ง„ํ–‰ํ•˜๊ธฐ์œ„ํ•ด์„œ๋Š”

 

 

1. ํšŒ์˜๊ฐ€ ์ผ์ฐ ๋๋‚˜๋Š” ์ˆœ์œผ๋กœ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜๊ณ 

2. ์ฒซ๋ฒˆ์งธ ํšŒ์˜ ๋๋‚˜๋Š” ์‹œ๊ฐ„ <= ๋‘๋ฒˆ์งธ ํšŒ์˜ ์‹œ์ž‘ ์‹œ๊ฐ„ // ํ•ด๋‹น ์กฐ๊ฑด์œผ๋กœ ํ•„ํ„ฐ๋ง

3. ์œ„ ์กฐ๊ฑด์— ์ผ์น˜ํ•˜๋ฉด ๋‘๋ฒˆ์งธ ํšŒ์˜ ์‹œ์ž‘์‹œ๊ฐ„์„ ํšŒ์˜ ๋๋‚˜๋Š” ์‹œ๊ฐ„ <= ์„ธ๋ฒˆ์งธ ํšŒ์˜ ์‹œ์ž‘์‹œ๊ฐ„

 

 

์ด๋Ÿฐ์‹์œผ๋กœ ์นด์šดํŠธ๋ฅผ ํ•ด๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค

์ด๋Ÿฌ๋ฉด ์ตœ๋Œ€ํ•œ ๋งŽ์€ ํšŒ์˜๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

 

 

์ •๋ ฌํ•œ ๋ฐฐ์—ด์„ ํฌ๋ฌธ์œผ๋กœ ๋„๋Š”๋ฐ

2๋ฒˆ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋ฉด countํ•˜๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

 

import sys

n = int(input())

endPoint: int = 0
answer: int = 0

arr = []

for i in range(0,n):
    a, b = map(int,sys.stdin.readline().rstrip().split())
    arr.append([a,b])

arr.sort(key=lambda x: (x[1], x[0]))

for newStart, newEnd in arr:
    if endPoint <= newStart:
        answer += 1
        endPoint = newEnd
print(answer)

 

 

๊ทธ๋ž˜์„œ ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

 

 

์•„๋ž˜๋Š” ์ด์ฐจ์› ๋ฐฐ์—ด์—์„œ ๋‘๋ฒˆ์งธ ๊ฐ’์œผ๋กœ ์ •๋ ฌํ•˜๊ณ 

๊ฐ’์ด ๊ฐ™์œผ๋ฉด ์ฒซ๋ฒˆ์งธ ๊ฐ’์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ์ฝ”๋“œ ์ž…๋‹ˆ๋‹ค

 

 

arr.sort(key=lambda x: (x[1], x[0]))

 

 

def sort_key(item):
    return (item[1], item[0])  # (๋‘๋ฒˆ์งธ ๊ฐ’, ์ฒซ๋ฒˆ์งธ ๊ฐ’)

arr.sort(key=sort_key)

 

 

 

 

 

์ž˜ ๋Œ์•„๊ฐ€๋Š” ๋ชจ์Šต

 

 

์ด๋ ‡๊ฒŒ ์‹ค๋ฒ„1 

ํšŒ์˜์‹ค ๋ฐฐ์ • ๋ฐฑ์ค€ ๋ฌธ์ œ ํ’€์ดํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

 

๋Œ“๊ธ€