-
[백준][Kotlin]11003번 최솟값 찾기백준 2023. 2. 27. 23:02728x90
해당 문제는 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