상세 컨텐츠

본문 제목

Baekjoon(Kotlin) - 1931. 회의실 배정

Problems(Kotlin)/Baekjoon

by KDLiam 2023. 9. 15. 15:31

본문

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

 

1931번: 회의실 배정

(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.

www.acmicpc.net

 

[ RESULT ]

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter

val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))

fun main() {

    val N = br.readLine().toInt()

    val meetingTimes: MutableList<MutableList<Int>> = mutableListOf()
    var meeting: MutableList<Int>

    repeat(N) {
        val (s, e) = br.readLine()!!.split(" ").map { it.toInt() }
        meeting = mutableListOf(s, e)
        meetingTimes.add(meeting)
    }

    meetingTimes.sortWith(compareBy({ it[1] }, { it[0] }))


    var cnt = 1
    var currEnd = meetingTimes[0][1]

    for(i in 1 until N) {
        if(meetingTimes[i][0] >= currEnd) {
            currEnd = meetingTimes[i][1]
            cnt++
        }
    }

    bw.write(cnt.toString())

    br.close()
    bw.flush()
    bw.close()
}

 

[ Fails ]

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter

val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))

fun main() {

    val N = br.readLine().toInt()
    var max = 0

    val meetingTimes: MutableList<MutableList<Int>> = mutableListOf()
    var meeting: MutableList<Int>

    var currStart: Int
    var currEnd: Int

    repeat(N) {
        val (s, e) = br.readLine()!!.split(" ").map { it.toInt() }
        meeting = mutableListOf(s, e)
        meetingTimes.add(meeting)
    }

    meetingTimes.sortBy { it.first() }

    for(i in 0 until N) {
        val reservation: MutableList<MutableList<Int>> = mutableListOf()
        reservation.add(meetingTimes[i])
        currEnd = reservation[reservation.size-1][1]
        for(j in i+1 until N) {

             currStart = meetingTimes[j][0]

            if(currEnd < currStart) {
                reservation.add(meetingTimes[j])
                currEnd = reservation[reservation.size-1][1]
            }

        }
        if(max < reservation.size) max = reservation.size
    }

    bw.write(max.toString())

    br.close()
    bw.flush()
    bw.close()
}

정렬 후 모든 경우의 수를 확인해보려 했다. -> 시간초과

 

 

정렬 방식을 변경한 후 문제를 해결할 수 있었다.

관련글 더보기