ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준][Kotlin]1931번 회의실 배정
    백준 2023. 3. 21. 16:59
    728x90

    해당 문제는 주어진 자료를 끝나는 시간이 빠른 순으로 정렬한 뒤에 끝나는 시간이 같을 경우 시작시간이 빠른 순으로 정렬한 뒤에 반복문을 진행 하면서 현재 진행되고 있는 회의의 끝나는 시간과 다음 회의의 시작시간을 비교하여 끝나는 시간과 다음 회의의 시작시간이 같거나 크면 현재 진행되고 있는 회의의 끝나는 시간을 갱신 후 시간이 겹치지 않는 시간의 회의의 수를 갱신하면서 총 겹치지 않는 회의의 수를 알아 낼 수 있습니다.

     

    하기는 제가 작성한 코드와 제출 결과 입니다.

     

    import java.io.BufferedReader
    import java.io.BufferedWriter
    import java.io.InputStreamReader
    import java.io.OutputStreamWriter
    import java.util.*
    
    fun main() {
        val br = BufferedReader(InputStreamReader(System.`in`))
        //var bw = BufferedWriter(OutputStreamWriter(System.out))
        var st = StringTokenizer(br.readLine())
        val N = st.nextToken().toInt()
    
        var pq = PriorityQueue<time>(kotlin.Comparator { o1, o2 -> 
        if(o1.end == o2.end) o1.start.compareTo(o2.start) 
        else o1.end.compareTo(o2.end)})
    
        repeat(N){
            st = StringTokenizer(br.readLine())
            val start = st.nextToken().toInt()
            val end = st.nextToken().toInt()
            pq.add(time(start,end))
        }
        var count = 0
        var nowe = 0
        while(!pq.isEmpty()){
            val next = pq.poll()
            val nexts = next.start
            val nexte = next.end
            if(nowe <= nexts){
                nowe = nexte
                count++
            }
        }
        println(count)
    
        //bw.flush()
        //bw.close()
    }
    
    data class time(
        val start: Int,
        val end : Int
    )

Designed by Tistory.