๐ ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/11003
โธ ๋ฌธ์
N๊ฐ์ ์ A1, A2, ..., AN๊ณผ L์ด ์ฃผ์ด์ง๋ค.
Di = Ai-L+1 ~ Ai ์ค์ ์ต์๊ฐ์ด๋ผ๊ณ ํ ๋, D์ ์ ์ฅ๋ ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ด๋, i ≤ 0 ์ธ Ai๋ ๋ฌด์ํ๊ณ D๋ฅผ ๊ตฌํด์ผ ํ๋ค.
โธ ์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ L์ด ์ฃผ์ด์ง๋ค. (1 ≤ L ≤ N ≤ 5,000,000)
๋์งธ ์ค์๋ N๊ฐ์ ์ Ai๊ฐ ์ฃผ์ด์ง๋ค. (-109 ≤ Ai ≤ 109)
โธ ์ถ๋ ฅ
์ฒซ์งธ ์ค์ Di๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์์๋๋ก ์ถ๋ ฅํ๋ค.
๐ ๋ฌธ์ ์ ๋ณด
- ๐ ๋ฌธ์ ๋ ๋ฒจ : ํ๋ ํฐ๋ 5
- ๐ ๋ฌธ์ ์ ํ : ์๋ฃ๊ตฌ์กฐ, ์ฐ์ ์์ ํ, ๋ฑ
- ๐ฌ ํ์ด ์ธ์ด : JAVA
๐ค ๋ฌธ์ ํ์ด
์ฌ๋ผ์ด๋ฉ ์๋์ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ ํ ์ ์๋ ๋ฌธ์ ์ด๋ค.
๊ตฌ๊ฐ์ ๊ณ ์ ๊ธธ์ด l๋งํผ ์ฌ๋ผ์ด๋ฉ์ ์์ง์ด๋ฉฐ ์ต์๊ฐ์ ๊ตฌํด์ฃผ๋ฉด ๋๋ค.
Java์์ ์ฐ์ ์์ ํ ํ์ด๋ ์๊ฐ์ด๊ณผ๋ก ํต๊ณผํ์ง ๋ชปํ๋ค๊ณ ํ์ฌ
์๋ฐฉํฅ Queue์ธ Deque๋ฅผ ์ฌ์ฉํ๋ค.
Deque์ ๋ฐ์ดํฐ ํ์ ์ int[] ๋ฐฐ์ด๋ก ์ฒซ ๋ฒ์งธ ์ธ์์๋ ์ ๋ ฅ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๊ณ ,
๋ ๋ฒ์งธ ์ธ์์๋ ์ธ๋ฑ์ค๋ฅผ ๋ฃ์ด์ฃผ์๋ค. โก {num, idx}
๋ฌธ์ ์ ์์ ์ ๋ ฅ 1์ ์์๋ก ๋ค์ด๋ณด๋ฉด,
i = 0 : [ {1, 0} ] โก 1
i = 1 : [ {1, 0}, {5, 1} ] โก 1, 1
i = 2 : [ {1, 0}, {5, 1}, {2, 2} ] โก 1, 1, 1
โก ์๋ก ๋ค์ด์ค๋ ๊ฐ๋ณด๋ค ์ด์ ์ ๊ฐ์ด ํฌ๋ค๋ฉด ์ ๊ฑฐํ๋ค. (5 > 2 : deque.peekLast()[0] > num)
i = 3 : [ {1, 0}, {2, 2}, {3, 3} ] โก 1, 1, 1, 2
โก ํ์ฌ ์ต์๊ฐ์ ์ธ๋ฑ์ค๊ฐ ๊ตฌ๊ฐ์ ๊ณ ์ ๊ธธ์ด๋ฅผ ๋ฒ์ด๋๋ฉด ์ ๊ฑฐํ๋ค. (0 < 1 : deque.peek()[1] < i - (l-1))
i = 4 : [ {2, 2}, {3, 3}, {6, 4} ] โก 1, 1, 1, 2, 2
i = 5 : [ {2, 2}, {3, 3}, {6, 4}, {2, 5} ] โก 1, 1, 1, 2, 2, 2
โก ์๋ก ๋ค์ด์ค๋ ๊ฐ๋ณด๋ค ์ด์ ์ ๊ฐ์ด ํฌ๋ค๋ฉด ์ ๊ฑฐํ๋ค. (3, 6 > 2)
โก ํ์ฌ ์ต์๊ฐ์ ์ธ๋ฑ์ค๊ฐ ๊ตฌ๊ฐ์ ๊ณ ์ ๊ธธ์ด๋ฅผ ๋ฒ์ด๋๋ฉด ์ ๊ฑฐํ๋ค. (2 < 3)
i = 6 : [ {2, 5}, {3, 6} ] โก 1, 1, 1, 2, 2, 2, 2
i = 7 : [ {2, 5}, {3, 6}, {7, 7} ] โก 1, 1, 1, 2, 2, 2, 2, 2
i = 8 : [ {2, 5}, {3, 6}, {7, 7}, {3, 8} ] โก 1, 1, 1, 2, 2, 2, 2, 2, 3
โก ์๋ก ๋ค์ด์ค๋ ๊ฐ๋ณด๋ค ์ด์ ์ ๊ฐ์ด ํฌ๋ค๋ฉด ์ ๊ฑฐํ๋ค. (7 > 3)
โก ํ์ฌ ์ต์๊ฐ์ ์ธ๋ฑ์ค๊ฐ ๊ตฌ๊ฐ์ ๊ณ ์ ๊ธธ์ด๋ฅผ ๋ฒ์ด๋๋ฉด ์ ๊ฑฐํ๋ค. (5 < 6)
i = 9 : [ {3, 6}, {3, 8}, {5, 9} ] โก 1, 1, 1, 2, 2, 2, 2, 2, 3, 3
i = 10 : [ {3, 6}, {3, 8}, {5, 9}, {2, 10} ] โก 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 2
โก ์๋ก ๋ค์ด์ค๋ ๊ฐ๋ณด๋ค ์ด์ ์ ๊ฐ์ด ํฌ๋ค๋ฉด ์ ๊ฑฐํ๋ค. (3, 5 > 2)
i = 11 : [ {2, 10}, {6, 11} ] โก 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 2
์ ํ์ด๋๋ก ์ฝ๋๋ฅผ ์์ฑํด ๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
โ ์ต์ข ์ฝ๋
๋ฉ๋ชจ๋ฆฌ : 962996KB
์๊ฐ : 2312ms
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int l = Integer.parseInt(st.nextToken()); // ๊ณ ์ ๊ตฌ๊ฐ
StringBuilder sb = new StringBuilder();
Deque<int[]> deque = new ArrayDeque<>(); // num, idx
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
int num = Integer.parseInt(st.nextToken());
while (!deque.isEmpty() && deque.peekLast()[0] > num) {
deque.removeLast();
}
deque.offer(new int[] {num, i});
if (deque.peek()[1] < i - (l-1)) {
deque.remove();
}
sb.append(deque.peek()[0]).append(" ");
}
System.out.println(sb.toString());
}
}
ํด๊ฒฐ ์๋ฃ ! ๐ฅ
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Boj_12764] ์ธ์ง๋ฐฉ์ ๊ฐ ์คํ (0) | 2025.01.08 |
---|---|
[Boj_14431] ์์๋ง์ (0) | 2024.12.26 |
[Boj_1497] ๊ธฐํ์ฝ์ํธ (3) | 2024.12.07 |
[Boj_1584] ๊ฒ์ (0) | 2024.11.29 |
[Boj_20160] ์ผ์ฟ ๋ฅดํธ ์์ค๋ง ์ผ์ฟ ๋ฅดํธ ์ฃผ์ธ์ (0) | 2024.11.21 |