๋ฌธ์
์๋ ์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
N(๋ฐ์ดํฐ ๊ฐ์) L(์ต์๊ฐ์ ๊ตฌํ๋ ๋ฒ์)
Deque<Node> mydeque(๋ฐ์ดํฐ๋ฅผ ๋ด์ ๋ฑ ์๋ฃ๊ตฌ์กฐ)
for(N๋งํผ ๋ฐ๋ณต)
{
now(ํ์ฌ ๋ฐ์ดํฐ ๊ฐ)
๋ฑ์ ๋ง์ง๋ง ์์น์์๋ถํฐ now๋ณด๋ค ํฐ ๊ฐ์ ๋ฑ์์ ์ ๊ฑฐํ๊ธฐ
๋ฑ์ ๋ง์ง๋ง ์์น์ now๊ฐ ์ ์ฅํ๊ธฐ
๋ฑ์ 1๋ฒ์งธ ์์น์์๋ถํฐ L์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๊ฐ(now index-L <= index)์ ๋ฑ์์ ์ ๊ฑฐํ๊ธฐ
๋ฑ์ 1๋ฒ์งธ ๋ฐ์ดํฐ ์ถ๋ ฅํ๊ธฐ
}
๋ฑ์ ์ ์ฅํ ๋
ธ๋ ํด๋์ค ๋ณ๋ ์์ฑํ๊ธฐ
๋
ธ๋ ํด๋์ค์๋ index(์์ ์ ์์น), value(์์ ์ ๊ฐ) ๋ด
๋ฑ(Deque) ์ฐ์ฐ
์ผ์ชฝ์์ ํจ์๊ฐ ์ฝ์ , ์ญ์ : addFirst(), removeFirst()
์ค๋ฅธ์ชฝ์์ ํจ์๊ฐ ์ฝ์ , ์ญ์ : addLast(), removeLast()
์ฝ๋
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import java.io.*;
import java.util.*;
public class Q11003_์ต์๊ฐ์ฐพ๊ธฐ {
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());
// 1๏ธโฃ (0,1)
// 2๏ธโฃ (1,5)
// 3๏ธโฃ (2,2)
// 4๏ธโฃ (3,3)
// 5๏ธโฃ (4,6)
// ...
// ์๋ก๋ค์ด์ฌ ๊ฐ๋ณด๋ค ๋ ํฐ ๊ฐ์ด ์๋ค๋ฉด ์ ๊ฑฐ -> ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋๊ฒ ๋จ
while(!myDeque.isEmpty() && myDeque.getLast().value > now) {
myDeque.removeLast();
}
// -> 3๏ธโฃ(1,5) > (2,2) -> (1,5) ์ ๊ฑฐ ->(0,1), (2,2)
myDeque.addLast(new Node(i, now)); // ์๋ก์ด ๊ฐ์ ๋ค์ ์ถ๊ฐํด์ค
// -> 1๏ธโฃ(0,1)
// -> 2๏ธโฃ(0,1), (1,5)
// -> 4๏ธโฃ(0,1), (2,2), (3,3)
// -> 5๏ธโฃ(0,1), (2,2), (3,3), (4,6)
// ํ์์๋ ์๋ถ๋ถ์ ์ซ์๋ค ์์ ๊ธฐ
if(myDeque.getFirst().index <= i - L) { // ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค๊ฐ L์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฌ๋ค๋ฉด ์ ๊ฑฐ
myDeque.removeFirst(); // ๋งจ ์์ ์๋ ๋
ธ๋ ์ญ์
}
// -> 5๏ธโฃ ๋ฑ์ ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค(0) <= 4-L(3) -> (0,1) ์ ๊ฑฐ
bw.write(myDeque.getFirst().value + " "); // ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์๊ธฐ ๋๋ฌธ์ ๋งจ ์์ ์๋ ๊ฒ์ด ์ต์๊ฐ
}
bw.flush();
bw.close();
}
static class Node {
public int index;
public int value;
Node(int index, int value) {
this.index = index;
this.value = value;
}
}
}
/*
---- ์์ ์
๋ ฅ 1 -----
12 3
1 5 2 3 6 2 3 7 3 5 2 6
----- ์์ ์ถ๋ ฅ 1 -----
1 1 1 2 2 2 2 2 3 3 2 2
*/