๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] 1946๋ฒˆ_์‹ ์ž… ์‚ฌ์›

Dbswnstjd 2022. 11. 19. 03:16

๋ฌธ์ œ

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

 

1946๋ฒˆ: ์‹ ์ž… ์‚ฌ์›

์ฒซ์งธ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T(1 ≤ T ≤ 20)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์— ์ง€์›์ž์˜ ์ˆซ์ž N(1 ≤ N ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ ์ค„์—๋Š” ๊ฐ๊ฐ์˜ ์ง€์›์ž์˜ ์„œ๋ฅ˜์‹ฌ์‚ฌ ์„ฑ

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 1946๋ฒˆ ๋ฌธ์ œ - ์‹ ์ž… ์‚ฌ์›
from collections import deque
import sys
input = sys.stdin.readline
t = int(input())
for _ in range(t):
    n = int(input())
    arr = []
    for _ in range(n):
        a, b = map(int, input().split())
        arr.append((a,b))
    arr.sort(key = lambda x: x[0])

    res = arr[0][1]
    cnt = 1 # ์ฒซ๋ฒˆ์งธ๋Š” ๋ฌด์กฐ๊ฑด ์‚ฌ์›์œผ๋กœ ๋ฝ‘ํžˆ๊ธฐ ๋•Œ๋ฌธ์— 1๋ถ€ํ„ฐ ์‹œ์ž‘
    for compare in arr:
        if res > compare[1]:
            cnt += 1
            res = compare[1]
    print(cnt)

์ฒ˜์Œ์— ์•„๋ฌด ์ƒ๊ฐ์—†์ด res = min(res, compare[1])  ์„ ์ ์šฉํ–ˆ๋‹ค๊ฐ€ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. 

min์€ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n)์ธ๋ฐ for๋ฌธ ์•ˆ์— ์žˆ์–ด์„œ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n^2)์œผ๋กœ ๋Š˜์–ด๋‚œ ๊ฒƒ์ด๋‹ค. 

๊ทธ๋ž˜์„œ ์ฝ”๋“œ๋ฅผ ๋ฐ”๊ฟ”์คฌ๋Š”๋ฐ ๊ทธ๋ž˜๋„ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์„ฑ์ ์„ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ sys๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.