난이도: 플레티넘 5
풀이: Java의 util 중 하나인 덱(deque)를 이용한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import java.util.*; import java.io.*; public class Q11003 { public static final Scanner scanner = new Scanner(System.in); public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int L = Integer.parseInt(st.nextToken()); st = new StringTokenizer(br.readLine()); Deque<Node> mydeque = new LinkedList<>(); for (int i = 0; i < N; i ++) { int now = Integer.parseInt(st.nextToken()); while (!mydeque.isEmpty() && mydeque.getLast().value > now) { mydeque.removeLast(); } mydeque.addLast(new Node(now, i)); if (mydeque.getFirst().index <= i - L) { mydeque.removeFirst(); } bw.write(mydeque.getFirst().value + " "); } bw.flush(); bw.close(); } static class Node { public int value; public int index; Node(int value, int index){ this.value = value; this.index = index; } } } | cs |
'Algorithm (Java) > Data structure' 카테고리의 다른 글
배열과 리스트: 스택 수열 (백준 1874) (0) | 2023.11.16 |
---|---|
配列とリスト: スタックとキュー (0) | 2023.11.16 |
배열과 리스트: DNA 비밀번호 (백준 12891) (0) | 2023.11.15 |
配列とリスト: スライディングウィンドウ (0) | 2023.11.15 |
배열과 리스트: '좋은 수' 구하기 (백준 1253) (0) | 2023.11.15 |