[์ธํ๋ฐ/LIS/๊ฐ์ฅ ๋์ ํ ์๊ธฐ]
์ค๋์ LIS(์ต๋๋ถ๋ถ ์ฆ๊ฐ์์ด ์๊ณ ๋ฆฌ์ฆ)์ ํ์ฉํ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์๋ค.
์ฐ์ ์ ์ผ๋ก ํน์ ํ ๋ถ๋ถ์ ์ ๋ ฌ์ ํ๊ณ ์์ํ๋ฉด ์ํํ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์๋ค.
ํ์ง๋ง ์ด ๋ฌธ์ ๋ฅผ ์ ๋๋ก ํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด๋ฅผ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์์ผ ํ๊ณ , ์๋์ ์ฌ์ฉํ๊ณ ์๋ dy์ ๊ฐ๋ ์ ์ ํ์ ํด์ผ ํ๋ค.
<<ํ์ด>>
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
class Brick implements Comparable<Brick> {
public int s, h, w;
Brick(int s, int h, int w) {
this.s = s;
this.h = h;
this.w = w;
}
@Override
public int compareTo(Brick o) {
return o.s - this.s;
// ์ด๊ฒ ๋ด๋ฆฌ์ฐจ์ ํ์
}
}
class Main {
static int[] dy;
int solution(ArrayList<Brick> arr) {
int answer = 0;
Collections.sort(arr);
dy[0] = arr.get(0).h;
answer = dy[0];
for (int i = 1; i < arr.size(); i++) {
int max_h = 0;
for (int j = i-1; j >=0 ; j--) {
if(arr.get(i).w < arr.get(j).w && dy[j] > max_h) {
max_h = dy[j];
}
dy[i] = arr.get(i).h + max_h;
answer = Math.max(answer, dy[i]);
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
ArrayList<Brick> arr = new ArrayList<Brick>();
dy = new int[n];
for (int i = 0; i < n; i++) {
int a = in.nextInt();
int b = in.nextInt();
int c = in.nextInt();
arr.add(new Brick(a, b, c));
}
System.out.println(T.solution(arr));
}
}
1. ์ฐ์ ๊ฐ๋ค์ ๋ฃ์ ํด๋์ค ํ๋๋ฅผ ๋ง๋ค์ด ์ค๋ค.(Brick)
2. implements๋ก Comparable ์ถ์ ํด๋์ค๋ฅผ ๊ฐ์ ธ์จ๋ค.
3. ๊ทธ๋ค์ compareTo ๋ฉ์๋๋ฅผ ์ฌ์ ์ ํด์ค๋ค.
4. Brick.o - this.o ๋ ๋ด๋ฆผ์ฐจ์ this.o - Brick.o ๋ ์ค๋ฆ์ฐจ์์ด๋ค.
5. ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ง๋๋ ํํ๋ก ํ๋ค.
6. ๊ทธ๋ค์ solution ๋ฉ์๋ ๋ด๋ถ์์ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌ์ํ๋๋ฐ, Collection.sort()๋ก ๊ฐ์ฒด๋ฅผ ์ ๋ ฌํ๋ค.
7. dy ๋ฐฐ์ด์ ํ์ฉํด์ ๊ฐ ๊ฐ์ฒด๊ฐ ์๊ธฐ๊ฐ ๊ฐ ์ ์๋ ์ต๋ ๋์ด์ ๊ฐ์ ๊ตฌํ ๋ค, dy์๋ค๊ฐ ๋ฃ์ด์ค๋ค.
8. dy๋ฅผ ๋ฃ์ด์ฃผ๋ ๊ณผ์ ์์ Math.max ๋ก answer ๊ฐ์ ์ถ์ถํ๋ค.
์ ์ฒด์ ์ผ๋ก ์ด๋ฌํ ๊ตฌ์ฑ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ํ์ด๋๊ฐ๋ฉด ๋๋ค.
์ด๋ป๊ฒ ๋ณด๋ฉด ์ฌ์ด ๋ฌธ์ ์ผ ์๋ ์์ง๋ง, ์ฒ์ ํ๋ฉด ์ฝ๊ฐ์ ํท๊ฐ๋ฆด ์๋ ์๊ณ ๊ทธ๋ก์ธํด ์๋ฟ์ง ๋ชปํ ์๋ ์๋ค.
๋๋ ์ดํด๋ ํ์ง๋ง ๋ง์ฝ ํผ์ ๋ค์ ํ์ด๋ผ๊ณ ํ๋ค๋ฉด ํ ์๋ ์์ง๋ง ์กฐ๊ธ ๋๋ฆด ์๋ ์๋ค๊ณ ์๊ฐํ๋ค.
๊ฒฐ๊ตญ, ๋ฐ๋ณต๋ ๊ณต๋ถ๋ก ์ต์ํด์ง๊ณ ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๋ ผ๋ฆฌ์ ์ธ ์ฌ๊ณ ๋ฅผ ๊ธธ๋ฌ ๋๊ฐ๋ค๋ฉด ์ถฉ๋ถํ ํด๊ฒฐํ ์ ์๋ค๊ณ ๋ณธ๋ค.
'์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธํ๋ฐ/DFS/ํผ์๋ฐฐ๋ฌ๊ฑฐ๋ฆฌ] (0) | 2024.12.08 |
---|---|
[์ธํ๋ฐ/Greedy/์ต๋์์ ์ค์ผ์ค] (0) | 2024.10.27 |
[์ธํ๋ฐ/DFS/์ฌ๋๋ผ ์์ผ๋๋] (5) | 2024.09.01 |
[์ธํ๋ฐ/๋ค์ด๋๋ฏน(LIS)/์ต๋ ๋ถ๋ถ ์ฆ๊ฐ์์ด] (0) | 2024.05.23 |
[์ธํ๋ฐ/BFS/12.ํ ๋งํ ] (1) | 2024.05.19 |
๋๊ธ