Tags
- greedy
- ์ํ
- ์๋ฃ๊ตฌ์กฐ
- dfs
- queue
- ์๋ฎฌ๋ ์ด์
- stack
- ์ ๋ ฌ
- BOJ
- ๋ฐฑํธ๋ํน
- LV2
- Dynamic Programming
- ๋๋น ์ฐ์ ํ์
- Brute Force Algorithm
- ๊ตฌํ
- Study
- SpringBoot
- ๊ทธ๋ํ ํ์
- Python
- sort
- Java
- ์ ์๋ก
- ๊ทธ๋ํ ์ด๋ก
- ๋ฌธ์์ด
- PGM
- BFS
- DP
- CodingTest
- ๊น์ด ์ฐ์ ํ์
- ๊ต์ฌ
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_11003 : ์ต์๊ฐ ์ฐพ๊ธฐ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์ผ์ ๋ฒ์ ์์์ ์ต์๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ฏ๋ก ์ฌ๋ผ์ด๋ฉ ์๋์ฐ์ ์ ๋ ฌ์ ์ฌ์ฉํด์ผ ํ๋ค.
- ์๋์ฐ์ ํฌ๊ธฐ๋ ์ต์๊ฐ์ ๊ตฌํ๋ ๋ฒ์๊ฐ i-L+1 ~ i ์ด๋ฏ๋ก L๋ก ์๊ฐํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ ๋ ฌ์ O(nlogn)์ธ๋ฐ N,L ์ ๋ฒ์๊ฐ 5,000,000๊น์ง ์ด๋ฏ๋ก ์ ๋ ฌ์ ์ฌ์ฉํ์ง ๋ชปํ๋ค.
- O(n)์ ์๊ฐ ๋ณต์ก๋๋ก ํด๊ฒฐํด์ผ๋๋ฏ๋ก ์๋์ฐ๋ฅผ ๋ฑ(deque)๋ก ๊ตฌํํ์ฌ ์ ๋ ฌ ํจ๊ณผ๋ฅผ ๋ธ๋ค.
- ๋ฑ์ (์ธ๋ฑ์ค, ์ซ์) ํํ์ ๋ ธ๋๋ฅผ ํด๋์ค๋ก ๊ตฌํํ์ฌ ์ ์ฅํ๋ค.
- ์ ๋
ธ๋๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฝ์
- ๋ง์ง๋ง ๋ ธ๋์ ๊ฐ์ด ์ ๋ ธ๋๋ณด๋ค ํฌ๋ฉด ์ญ์ ํ๊ณ , ์ ๋ ธ๋ ์ฝ์
- ๋ง์ง๋ง ๋ ธ๋์ ๊ฐ์ด ์ ๋ ธ๋๋ณด๋ค ์์ผ๋ฉด, ์ ๋ ธ๋ ๊ทธ๋ฅ ์ฝ์
- ์๋์ฐ์ ํฌ๊ธฐ๋ณด๋ค ๋ฑ์ ์์๋ค์ ์ธ๋ฑ์ค ๋ฒ์๊ฐ ์ปค์ง๋ฉด, ๋งจ ์ ๋ ธ๋ ์ญ์
- ์ต์๊ฐ ์ถ๋ ฅ(๋ฐฐ์ด ๋๊น์ง ๋ฐ๋ณต)
๐ธ ์ฝ๋ ๐ธ
import java.io.*;
import java.util.Deque;
import java.util.LinkedList;
import java.util.StringTokenizer;
public class Main {
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> deque = new LinkedList<>();
for (int i = 0; i < n; i++){
int now = Integer.parseInt(st.nextToken());
// ์๋ก์ด ๊ฐ์ด ๋ค์ด์ฌ ๋๋ง๋ค ์ ๋ ฌ ๋์ ํ์ฌ ์๋ณด๋ค ํฐ ๊ฐ์ ๋ฑ์์ ์ ๊ฑฐ
while (!deque.isEmpty() && deque.getLast().value > now){
deque.removeLast();
}
deque.addLast(new Node(now, i));
// ๋ฒ์์์ ๋ฒ์ด๋ ๊ฐ์ ๋ฑ์์ ์ ๊ฑฐ
if (deque.getFirst().index <= i-l){
deque.removeFirst();
}
bw.write(deque.getFirst().value + " ");
}
bw.close();
}
static class Node{
public int value;
public int index;
Node(int value, int index){
this.value = value;
this.index = index;
}
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- Nodeํด๋์ค๋ฅผ ๋ง๋ค์ด ๊ฐ๊ณผ ์ธ๋ฑ์ค๋ฅผ ์ ์ฅํ๋ค.
- ๋ฑ ์ Node ํด๋์ค๋ฅผ ์ฌ์ฉํด์ ์ ์ธํ๋ค.
- ์๋ฅผ ํ๋์ฉ ์
๋ ฅ๋ฐ์ผ๋ฉฐ ๊ณ์ฐ์ ๋ฐ๋ณตํ๋ค.
- ์๋ก์ด ๊ฐ์ด ๋ค์ด์ฌ ๋๋ง๋ค ๋ง์ง๋ง ๊ฐ์ด ์ ๊ฐ๋ณด๋ค ํฌ๋ค๋ฉด, ๋ฐ๋ณตํด์ ์ ๊ฑฐํ๊ณ ์ ๊ฐ์ ๋ฃ๋๋ค.
- ๋ง์ฝ ๋งจ ์ ๊ฐ์ ์ธ๋ฑ์ค๊ฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด, ์๋์ฐ๊ฐ l๋ณด๋ค ์ปค์ง ๊ฒ์ด๋ฏ๋ก ๋งจ ์ ๊ฐ์ ์ ๊ฑฐํ๋ค.
- ํ์ฌ ๊ฐ์ฅ ์์ ์๋ ์๊ฐ ๋ฒ์์ ์ต์๊ฐ์ด๋ฏ๋ก ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- ์ฒ์ ํ์ด๋ณธ ๊ณจ๋1 ๋ฌธ์ ์๋๋ฐ, ๊ต์ฌ์ ํ์ด๊ฐ ์์๋ค๋ฉด ํ ์ ์์์ ๊ฒ ๊ฐ๋ค.
- java์์ ๋ฑ ๋ฑ์ ๊ธฐ๋ณธ์ ์ธ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋ง์ด ์ฐ์ตํ ํ์์ฑ์ ๋๊ผ๋ค.
- ํ๊ทธ์ ์ฐ์ ์์ ํ๊ฐ ์๋ ๊ฑธ ๋ณด๋, ๋ฑ ๋์ ์ฐ์ ์์ ํ๋ฅผ ์ฌ์ฉํด ์ ๋ ฌ์ ๋์ ํ ์ ์์ด ๋ณด์ธ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_17298 : ์คํฐ์ (0) | 2022.11.07 |
---|---|
BOJ_1874 : ์คํ ์์ด (0) | 2022.11.07 |
BOJ_12891 : DNA ๋น๋ฐ๋ฒํธ (0) | 2022.11.03 |
BOJ_1120 : ๋ฌธ์์ด (0) | 2022.11.02 |
BOJ_1064 : ํํ์ฌ๋ณํ (0) | 2022.11.01 |