algorithm

λ°±μ€€ 1931번: νšŒμ˜μ‹€ λ°°μ • (싀버1) python

ggasoon2 2023. 4. 20. 01:05

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 

νšŒμ˜μ‹€ λ°°μ • λ°±μ€€ 문제 ν’€μ΄ν–ˆμŠ΅λ‹ˆλ‹€.

 

 

κ°μ‚¬ν•©λ‹ˆλ‹€.