πŸ‘©πŸ»‍🌾

[λ°±μ€€/Python] 1931번 νšŒμ˜μ‹€ λ°°μ • λ³Έλ¬Έ

μ½”λ”©ν…ŒμŠ€νŠΈ/λ°±μ€€(BOJ)

[λ°±μ€€/Python] 1931번 νšŒμ˜μ‹€ λ°°μ •

μ₯¬μŠ€μ΄ 2023. 3. 9. 17:50
728x90

1οΈβƒ£λ¬Έμ œ μ„€λͺ…

ν•œ 개의 νšŒμ˜μ‹€μ΄ μžˆλŠ”λ° 이λ₯Ό μ‚¬μš©ν•˜κ³ μž ν•˜λŠ” N개의 νšŒμ˜μ— λŒ€ν•˜μ—¬ νšŒμ˜μ‹€ μ‚¬μš©ν‘œλ₯Ό λ§Œλ“€λ €κ³  ν•œλ‹€. 각 회의 I에 λŒ€ν•΄ μ‹œμž‘μ‹œκ°„κ³Ό λλ‚˜λŠ” μ‹œκ°„μ΄ μ£Όμ–΄μ Έ 있고, 각 νšŒμ˜κ°€ κ²ΉμΉ˜μ§€ μ•Šκ²Œ ν•˜λ©΄μ„œ νšŒμ˜μ‹€μ„ μ‚¬μš©ν•  수 μžˆλŠ” 회의의 μ΅œλŒ€ 개수λ₯Ό μ°Ύμ•„λ³΄μž. 단, νšŒμ˜λŠ” ν•œλ²ˆ μ‹œμž‘ν•˜λ©΄ 쀑간에 쀑단될 수 μ—†μœΌλ©° ν•œ νšŒμ˜κ°€ λλ‚˜λŠ” 것과 λ™μ‹œμ— λ‹€μŒ νšŒμ˜κ°€ μ‹œμž‘λ  수 μžˆλ‹€. 회의의 μ‹œμž‘μ‹œκ°„κ³Ό λλ‚˜λŠ” μ‹œκ°„μ΄ 같을 μˆ˜λ„ μžˆλ‹€. 이 κ²½μš°μ—λŠ” μ‹œμž‘ν•˜μžλ§ˆμž λλ‚˜λŠ” κ²ƒμœΌλ‘œ μƒκ°ν•˜λ©΄ λœλ‹€.

2οΈβƒ£μž…λ ₯

첫째 쀄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진닀. λ‘˜μ§Έ 쀄뢀터 N+1 μ€„κΉŒμ§€ 각 회의의 정보가 μ£Όμ–΄μ§€λŠ”λ° 이것은 곡백을 사이에 두고 회의의 μ‹œμž‘μ‹œκ°„κ³Ό λλ‚˜λŠ” μ‹œκ°„μ΄ 주어진닀. μ‹œμž‘ μ‹œκ°„κ³Ό λλ‚˜λŠ” μ‹œκ°„μ€ 231-1보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜ λ˜λŠ” 0이닀.

3οΈβƒ£μΆœλ ₯

첫째 쀄에 μ΅œλŒ€ μ‚¬μš©ν•  수 μžˆλŠ” 회의의 μ΅œλŒ€ 개수λ₯Ό 좜λ ₯ν•œλ‹€.

 


πŸ‘©πŸ»‍πŸ’»μž‘μ„±ν•œ μ½”λ“œ

import sys

input = sys.stdin.readline

n = int(input())  # 회의 개수
A = [[0] * 2 for _ in range(n)]
cnt = 0  # κ°€λŠ₯ν•œ 회의 수

for i in range(n):
    s, e = map(int, input().split())	# μ‹œμž‘μ‹œκ°„, μ’…λ£Œμ‹œκ°„
    A[i][0] = s
    A[i][1] = e

A.sort(key=lambda x: (x[1], x[0]))  # μ’…λ£Œμ‹œκ°„μ΄ 같을 λ•Œ, μ‹œμž‘μ‹œκ°„μ„ κΈ°μ€€μœΌλ‘œ μ˜€λ¦„μ°¨μˆœ μ •λ ¬

end = 0

for i in range(n):
    if A[i][0] >= end:
        end = A[i][1]
        cnt += 1

print(cnt)

πŸ’‘μ½”λ“œ μ„€λͺ…

이 λ¬Έμ œλŠ” 회의 μ’…λ£Œμ‹œκ°„μ΄ λΉ λ₯Όμˆ˜λ‘ λ‹€μŒ νšŒμ˜μ™€ κ²ΉμΉ˜μ§€ μ•Šκ²Œ μ‹œμž‘ν•˜κΈ°μ— μœ λ¦¬ν•˜κ³  μ΅œλŒ€ν•œ λ§Žμ€ 회의λ₯Ό λ°°μ •ν•  수 μžˆμœΌλ―€λ‘œ μ’…λ£Œμ‹œκ°„μ„ κΈ°μ€€μœΌλ‘œ μ˜€λ¦„μ°¨μˆœ 정렬을 ν•œλ‹€.

 

λ‘λ²ˆμ§Έ for문을 보면, μ‹œμž‘μ‹œκ°„μ΄ μ’…λ£Œμ‹œκ°„λ³΄λ‹€ ν¬κ±°λ‚˜ κ°™μœΌλ©΄ νšŒμ˜κ°€ κ²ΉμΉ˜μ§€ μ•ŠμœΌλ―€λ‘œ cnt에 +1을 ν•΄μ€€λ‹€.

728x90
Comments