ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준][Kotlin]11003번 최솟값 찾기
    백준 2023. 2. 27. 23:02
    728x90

    해당 문제는 data class 와 Deque를 사용하면 쉽게 풀 수 있는 문제였습니다.

    data class에는 인덱스 정보와 value 정보를 저장 할 수 있도록 만든 뒤에 deque에 입력 순서대로 확인하려는 갯수에 따른 확인하는 index인지 체크 하면서 저장할지 안할지를 혹은 삭제를 해야되는지 안해야 되는지 확인하며, bw에 해당 값을 넣어주면 최솟값을 찾아 낼 수 있습니다.

     

    하기는 작성한 코드와 실행 결과 입니다.

     

    import java.io.BufferedReader
    import java.io.BufferedWriter
    import java.io.InputStreamReader
    import java.io.OutputStreamWriter
    import java.util.*
    
    data class Dcl(val idx: Int, val vle: Int)
    
    fun main() {
    //    val s = System.currentTimeMillis()
        var br = BufferedReader(InputStreamReader(System.`in`))
        var st = StringTokenizer(br.readLine())
        val N = st.nextToken().toInt()
        val check = st.nextToken().toInt()
    
        var dq = ArrayDeque<Dcl>()
    
        st = StringTokenizer(br.readLine())
        val bw = BufferedWriter(OutputStreamWriter(System.out))
    
        repeat(N){
            var temp = Dcl(it,st.nextToken().toInt())
            while(!dq.isEmpty() && dq.peekLast().vle > temp.vle){
                dq.removeLast()
            }
            dq.addLast(temp)
            if(dq.peekFirst().idx <= it-check){
                dq.removeFirst()
            }
            bw.write("${dq.peekFirst().vle}")
            bw.write(" ")
        }
        bw.flush()
        bw.close()
    //   val e = System.currentTimeMillis()
    //   println((e-s)/1000.0)
    
    }

    '백준' 카테고리의 다른 글

    [백준][Kotlin]11399번 ATM  (0) 2023.02.27
    [백준][Kotlin]11286번 절댓값 힙  (0) 2023.02.27
    [백준][Kotlin]10989번 수 정렬하기3  (0) 2023.02.27
    [백준][Kotlin]1377번 버블 소트  (0) 2023.02.27
    [백준][Kotlin]2164번 카드2  (0) 2023.02.26
Designed by Tistory.