πŸ—οΈ 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λ₯Ό μ‚¬μš©ν•˜μ—¬ ν•΄κ²°ν•˜μ˜€λ‹€.