Tags
- ๋ฐฑํธ๋ํน
- greedy
- Brute Force Algorithm
- BOJ
- SpringBoot
- PGM
- ๋๋น ์ฐ์ ํ์
- ๊ทธ๋ํ ์ด๋ก
- ์๋ฃ๊ตฌ์กฐ
- ๋ฌธ์์ด
- ์ํ
- LV2
- Study
- Dynamic Programming
- ๊ตฌํ
- ์ ๋ ฌ
- Java
- sort
- CodingTest
- BFS
- DP
- ๊ต์ฌ
- ๊น์ด ์ฐ์ ํ์
- dfs
- ๊ทธ๋ํ ํ์
- queue
- ์๋ฎฌ๋ ์ด์
- Python
- ์ ์๋ก
- stack
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_19621 : ํ์์ค ๋ฐฐ์ 2 ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ํ์ ์๊ฐ์ ์งํํ ์ ์๋ ํ์๋ฅผ ์กฐ์ ํด, ํ์์ ์ฐธ์ฌํ ์ธ์์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
- ํ์ ๋ณ ์ต๋ ์ฐธ์ฌ ์ธ์์ DP์ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ํ์ดํ ์ ์๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Meeting[] meetings = new Meeting[n];
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
meetings[i] = new Meeting(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
}
Arrays.sort(meetings);
int[] dp = new int[n];
int max = meetings[0].people;
dp[0] = meetings[0].people;
for (int i = 1; i < n; i++) {
for (int j = i; j >= 0; j--) {
if (meetings[i].start > meetings[j].end && dp[i] < dp[j]) {
dp[i] = dp[j];
}
}
dp[i] += meetings[i].people;
max = Math.max(max, dp[i]);
}
System.out.println(max);
}
private static class Meeting implements Comparable<Meeting>{
int start, end, people;
public Meeting(int start, int end, int people) {
this.start = start;
this.end = end;
this.people = people;
}
@Override
public int compareTo(Meeting o) {
return this.end - o.end;
}
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ํ์๋ฅผ ์ข ๋ฃ ์๊ฐ ์์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋ค.
- dp ๋ฐฐ์ด์ ์ํํ๋ฉฐ ๊ฐ์ ์ฑ์ด๋ค.
- ์ธ๋ฑ์ค์ ํด๋นํ๋ ํ ํ์๋ฅผ ์งํํ์๋, ํ์ ์ธ์ ํฉ์ ์ต๋๊ฐ์ ์ ์ฅํ๋ค.
- ์ด์ ์ ํ์ ์ค ์ฐ์์ผ๋ก ์งํํ ์ ์๋ ํ์์ ์ฐธ์ฌ ์ธ์ ์ต๋๊ฐ์ ๊ฐ์ ธ์จ๋ค.
- ๊ฐ๊ณ ์จ ์ฐธ์ฌ ์ธ์ ์ต๋๊ฐ์ ํ์ฌ ํ์์ ์ฐธ์ฌ ์ธ์์ ๋ํด ์ ์ฅํ๋ค.
- ์ต๋๊ฐ๊ณผ ๋น๊ตํด ์ ๋ฐ์ดํธํ๋ค.
- ์ธ๋ฑ์ค์ ํด๋นํ๋ ํ ํ์๋ฅผ ์งํํ์๋, ํ์ ์ธ์ ํฉ์ ์ต๋๊ฐ์ ์ ์ฅํ๋ค.
- ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- ํ์ด๋ฅผ ๋ค์๋ณด๋ DP๊ฐ ๋ง๋ ์ถ๋ค. ๋ธ๋ฃจํธ ํฌ์ค๋ก ํ์ดํ ๊ฒ ๊ฐ๋ค.
- ๋ค๋ฅธ ํ์ด๋ฅผ ์ฐพ์๋ณด๋ DFS ๋ฑ์ผ๋ก ํ์ดํ ์ ์๋๋ฐ, DP๋ ๋ค๋ฅธ ํ์ด๊ฐ ๋ง๋ค.
- ๋ฌธ์ ์ ํ์ ์ ๋ค๋ก ์ธ์ ํ ํ์๋ง ์์,๋์ด ๊ฒน์น๋ค๊ณ ํ์ผ๋ฏ๋ก,
์ ํ์์ dp[i] = Math.max(dp[i-1], dp[i-2]+arr[i]) ๊ฐ ๋๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_12865 : ํ๋ฒํ ๋ฐฐ๋ญ (0) | 2023.02.20 |
---|---|
BOJ_14888 : ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2023.02.20 |
BOJ_1697 : ์จ๋ฐ๊ผญ์ง (0) | 2023.02.12 |
BOJ_1954 : ํํ์คํ (0) | 2023.02.10 |
BOJ_1992 : ์ฟผ๋ํธ๋ฆฌ (0) | 2023.02.10 |