Algorithm Problem/Python

[python] λ°±μ€€ - 1931. νšŒμ˜μ‹€ λ°°μ •

deo2kim 2020. 9. 29. 18:19
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

  • S2 | μ •λ ¬, 그리디

회의 μ‹œκ°„μ΄ κΈ΄ 것과 상관 없이 νšŒμ˜κ°€ λλ‚˜λŠ” μ‹œκ°μ΄ λΉ λ₯Έκ²ƒμ„ 선택

  1. νšŒμ˜κ°€ λλ‚˜λŠ” μ‹œκ°μ΄ λΉ λ₯Έ 순으둜 μ •λ ¬
  2. 이전 νšŒμ˜κ°€ λλ‚œ μ‹œκ°κ³Ό λΉ„κ΅ν•˜μ—¬ 회의λ₯Ό μ‹œμž‘ν•  수 있으면 카운트 +1
  3. μ—†μœΌλ©΄ 톡과

πŸ’¨ λλ‚˜λŠ” μ‹œκ° 뿐만 μ•„λ‹ˆλΌ μ‹œμž‘ μ‹œκ°„λ„ λ‘λ²ˆ 째둜 μ •λ ¬ ν•΄μ€˜μ•Ό ν•œλ‹€.

λ°˜λ‘€ [2,2], [1,2]

πŸ’¨ sys.stdin.readline κ³Ό input의 차이 (μ•„λž˜κ°€ input()으둜 받은 것)

 

πŸ’»μ†ŒμŠ€ μ½”λ“œ

 import sys

input = sys.stdin.readline
N = int(input())
meetings = [list(map(int, input().split())) for _ in range(N)]
meetings.sort(key=lambda x: (x[1], x[0]))  # λλ‚˜λŠ” μ‹œκ°μ΄ λΉ λ₯Έκ±Έλ‘œ μ •λ ¬ |
# μ‹œμž‘ μ‹œκ°„λ„ μ •λ ¬ν•΄μ£ΌλŠ” μ΄μœ λŠ” [2,2], [1,2] κ°€ μžˆμ„ 경우 2,2의 회의λ₯Ό 해버리면 1,2 회의λ₯Ό 진행할 수 μ—†μŒ
# κ·ΈλŸ¬λ―€λ‘œ 정렬을 톡해 [1,2] 진행 ν›„ [2,2] κ°€ μ§„ν–‰λ˜κ²Œ ν•΄μ•Ό ν•œλ‹€.
end_time = 0
answer = 0
for i in range(N):
    if meetings[i][0] >= end_time:
        answer += 1
        end_time = meetings[i][1]

print(answer)

 

πŸ“•λ¬Έμ œ 확인

좜처: BACKJOON ONLINE JUDGE

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

 

1931번: νšŒμ˜μ‹€λ°°μ •

(1,4), (5,7), (8,11), (12,14) λ₯Ό μ΄μš©ν•  수 μžˆλ‹€.

www.acmicpc.net

 

λ°˜μ‘ν˜•