Potato
μ•ˆλ…•ν•˜μ„Έμš”, κ°μž‘λ‹ˆλ‹€?πŸ₯” ^___^ 😺 github λ°”λ‘œκ°€κΈ° πŸ‘‰πŸ»

Algorithm/Baekjoon

[λ°±μ€€] (Swift) 1931번 - νšŒμ˜μ‹€ λ°°μ • (λ‘λ²ˆμ§Έ 풀이) (feat. 그리디)

감자 πŸ₯” 2023. 2. 1. 18:47
λ°˜μ‘ν˜•

🟣 문제

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

 

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

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

www.acmicpc.net

 

🟣 λ‚˜μ˜ 풀이 

λλ‚˜λŠ” μ‹œκ°„λ§Œ κ³ λ €ν•˜λ©΄ λ˜λŠ”μ€„μ•Œ κ³  정렬을 ν•œλ²ˆλ§Œ ν–ˆλ‹€κ°€ ν‹€λ Έλ‹€. 음.. κ·Έλƒ₯ μΌμ°λλ‚˜λ©΄ μ’‹κ²Ÿμ§€? ν•˜ν•˜ν•˜ν•˜ ν•˜λ©΄μ„œ,, ? λ‹¨μˆœν•˜κ²Œ, μ–΄μ°¨ν”Ό λλ‚˜λŠ” μ‹œκ°„λ³΄λ‹€ μ‹œμž‘μ‹œκ°„μ΄ μž‘κ²Œ μ£Όμ–΄μ§ˆν…Œλ‹ˆ, λλ‚˜λŠ” μ‹œκ°„μˆœμ„œλŒ€λ‘œ μ •λ ¬ν•˜λ©΄ μ‹œμž‘μˆœμ„œλŠ” μ–΄λŠμ •λ„ 정렬이 될 쀄 μ•Œμ•˜λ‹€.

틀리고 λ‚˜μ„œ λ‹€μ‹œ ν•œλ²ˆ μƒκ°ν•΄λ³΄λ‹ˆ,,, 'μ‹œμž‘μ‹œκ°„μ΄ λ‹€λ₯΄κ³  λλ‚˜λŠ” μ‹œκ°„μ΄ 같을 경우'λ₯Ό μƒκ°ν•˜μ§€ μ•Šμ•˜λ‹€. λ§Œμ•½ [2,3] κ³Ό [3,3] 이 μ£Όμ–΄μ‘Œλ‹€λ©΄, λλ‚˜λŠ” μ‹œκ°„μˆœμ„œλŒ€λ‘œλ§Œ 정렬을 해버리면, μž…λ ₯된 μˆœμ„œλŒ€λ‘œ [2,3] , [3,3]이 정렬될것이닀. ν•˜μ§€λ§Œ, 사싀 [3,3]이 λ¨Όμ € μž…λ ₯된 상황이라면, [3,3] 회의λ₯Ό λ¨Όμ € μ„ νƒν•΄λ²„λ¦¬κ²Œ 되고, [2.3] νšŒμ˜λŠ” κ³ λ €λ˜μ§€ λͺ»ν•œλ‹€. (μ•„λž˜ μ˜ˆμ‹œ)

❌ λλ‚˜λŠ” μˆœμ„œλ‘œλ§Œ μ •λ ¬ν•΄μ„œ, λλ‚˜λŠ” μ‹œκ°„μ΄ 같은 κ²½μš°κ°€ μ •λ ¬λ˜μ§€ μ•Šμ•˜μ„ 경우
meetings: [1, 1] [3, 3] [2, 3] 
[1, 1], [3, 3] 회의 선택 -> λ‹΅ 2

βœ… μ‹œμž‘μˆœμ„œλ„ 정렬이 잘 λ˜μ–΄μžˆκ³ , λλ‚˜λŠ” μˆœμ„œλ„ 정리가 잘 λ˜μ–΄μžˆλŠ” 경우
meetings: [1, 1] [2, 3] [3, 3]
[1, 1] [2, 3] [3, 3] 회의 선택 -> λ‹΅ 3

κ·Έλž˜μ„œ μ΅œλŒ€ν•œ λ§Žμ€ 회의λ₯Ό μ„ νƒν•˜κΈ° μœ„ν•΄μ„œλŠ” λλ‚˜λŠ” μˆœμ„œλ§Œ μ •λ ¬ν•˜μ§€ μ•Šκ³  μ‹œμž‘μˆœμ„œκΉŒμ§€ λͺ¨λ‘ μ •λ ¬ν•΄μ£Όμ–΄μ•Όν•œλ‹€. 

μ΄κ²ƒλ§Œ ν•΄μ£Όκ³ , 이전 회의 λλ‚˜λŠ” μ‹œκ°„μ„ κ³ λ €ν•΄μ„œ meetingCnt에 1μ”© 더해주면 끝!

🟣 μ •λ‹΅μ½”λ“œ

import Foundation

let n = Int(readLine()!)!
var meetings = [[Int]]()
for _ in 0..<n {
    meetings.append(readLine()!.split(separator: " ").map{ Int($0)! })
}
var meetingCnt = 0
var endTime = 0

meetings.sort{ return $0[0] < $1[0] }
meetings.sort{ return $0[1] < $1[1] }

for meeting in meetings {
    if meetingCnt == 0 || meeting[0] >= endTime {
        endTime = meeting[1]
        meetingCnt += 1
    }
}

print(meetingCnt)
λ°˜μ‘ν˜•