Algorithm/Baekjoon

[λ°±μ€€] (Swift) 1931번 - νšŒμ˜μ‹€ λ°°μ • (싀버1) (feat. 그리디, νƒμš•λ²•)

감자 πŸ₯” 2022. 8. 31. 19:58
λ°˜μ‘ν˜•

🟠 문제 링크

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

 

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

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

www.acmicpc.net

 

🟠 λ‚˜μ˜ 풀이

μ•„μ΄νŒ¨λ“œλ‘œ 그림을 κ·Έλ¦¬λ©΄μ„œ μƒκ°ν•΄λ³΄λ‹ˆ, 주어진 μž…λ ₯값을 잘 μ •λ ¬ν•œλ‹€λ©΄, μˆœμ„œλŒ€λ‘œ λ”ν•΄κ°€λ©΄μ„œ 정닡을 찾을 수 μžˆμ„ 것 κ°™μ•˜λ‹€.

μš°μ„  λ§Žμ€ 회의λ₯Ό ν•˜κΈ° μœ„ν•΄μ„œλŠ”, λ™μΌν•œ μ‹œκ°„μ— μ‹œμž‘ν•˜λŠ” νšŒμ˜λŠ” μ΅œλŒ€ν•œ λΉ¨λ¦¬λλ‚˜μ•Όν•œλ‹€. μ΄μœ λŠ” 빨리 λλ‚ μˆ˜λ‘ λ’€μ—μ„œ κ³ λ €ν•΄λ³Ό νšŒμ˜κ°€ 많기 λ•Œλ¬Έμ΄λ‹€.

κ·Έλž˜μ„œ μ‹œμž‘μ‹œκ°„μ„ μˆœμ„œλ‘œ λ¨Όμ € μ •λ ¬ν•΄μ€€λ’€, μ’…λ£Œμ‹œκ°„μ„ κΈ°μ€€μœΌλ‘œ λ‹€μ‹œ ν•œ 번 μ •λ ¬μ‹œμΌœμ£Όμ–΄μ•Ό ν•œλ‹€. 

μ •λ ¬λœ 후에 prevEndTimeμ΄λΌλŠ” λ³€μˆ˜μ— λλ‚˜λŠ” μ‹œκ°„μ„ λ„£μ–΄μ£Όκ³ , 각 νšŒμ˜λ§ˆλ‹€ start μ‹œκ°„μ„ 비ꡐ해쀀닀. μ‹œμž‘μ‹œκ°„μ΄ prevEndTime보닀 ν¬κ±°λ‚˜ κ°™μœΌλ©΄ cnt λ₯Ό 1 μ¦κ°€μ‹œμΌœμ£Όκ³ , prevEndTime을 λ°”κΏ”μ€€λ‹€.

 

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

https://github.com/deslog/Algorithm/blob/main/Algorithm/Boj/1931_%ED%9A%8C%EC%9D%98%EC%8B%A4%20%EB%B0%B0%EC%A0%95/main.swift

 

GitHub - deslog/Algorithm

Contribute to deslog/Algorithm development by creating an account on GitHub.

github.com

import Foundation

// input
let n = Int(readLine()!)!
var meeting = [[Int]]()
for _ in 0..<n {
    let temp = readLine()!.split(separator: " ").map { Int(String($0))! }
    meeting.append(temp)
}

// main
func solution(_ meeting: [[Int]]) -> Int {
    // meeting μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬
    var sortedMeetings = meeting
    sortedMeetings.sort{ return $0[0] < $1[0] }
    sortedMeetings.sort{ return $0[1] < $1[1] }

    var cnt = 0
    var prevEndTime = 0

    for meeting in sortedMeetings {
        let start = meeting[0]
        let end = meeting[1]

        if start >= prevEndTime {
            cnt += 1
            prevEndTime = end
        }
    }
    return cnt
}

print(solution(meeting))

 

 

 

λ°˜μ‘ν˜•