Tags
- queue
- ๋๋น ์ฐ์ ํ์
- LV2
- ๊ตฌํ
- PGM
- ๊ต์ฌ
- ์ ๋ ฌ
- stack
- CodingTest
- ๋ฌธ์์ด
- Study
- SpringBoot
- ๊ทธ๋ํ ํ์
- ์๋ฃ๊ตฌ์กฐ
- Brute Force Algorithm
- ๊ทธ๋ํ ์ด๋ก
- DP
- Dynamic Programming
- ์ํ
- ๋ฐฑํธ๋ํน
- BOJ
- BFS
- Java
- ์๋ฎฌ๋ ์ด์
- ์ ์๋ก
- sort
- dfs
- ๊น์ด ์ฐ์ ํ์
- Python
- greedy
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_11053 : ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- n๊ฐ์ ์์ด์ ์ ๋ ฅ๋ฐ๊ณ , ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ค.
- ์์ด์ ์ธ๋ฑ์ค ๋ณ ๋ถ๋ถ ์์ด ๊ธธ์ด์ ์ต๋๊ฐ์ ์ ์ฅํ๋ dp๋ฐฐ์ด์ ๋ง๋ค์ด ๊ฐ์ ๊ตฌํ๋ค.
- ๊ฐ ์ธ๋ฑ์ค์ ์๊ฐ ๋ถ๋ถ ์์ด์ ๋ง์ง๋ง ์๊ฐ ๋์ ๋๋ฅผ ๊ณ์ฐํด์ ๊ทธ ์ค ์ต๋๊ฐ์ ๊ตฌํด์ผ ํ๋ค.
- ๊ฐ ์ธ๋ฑ์ค์ ์์ชฝ์์ ์์ด ์์๊ฐ์ด ๋ ์์ ๊ฒ๋ค ์ค dp๋ฐฐ์ด ๊ฐ์ด ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ตฌํ๋ค.
- ๊ตฌํ ๊ฐ์ +1ํด์ ํ์ฌ ์ธ๋ฑ์ค์ dp๋ฐฐ์ด ๊ฐ์ผ๋ก ์ ์ฅํ๋ค.
- ์์ด์ ์์๋ ๋ณ๊ฒฝํ ์ ์๋ค. (์ ๋ ฌํ์ง ์๋๋ค.)
- ๋ง์ง๋ง ์ธ๋ฑ์ค์ ๋ถ๋ถ ์์ด ๊ฐ์ด ๋ฌด์กฐ๊ฑด ์ต๋๊ฐ์ธ๊ฑด ์๋๋ค.
- ์์ ์์ด์ ์ ์ฉํด dp๋ฐฐ์ด์ ๊ตฌํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
- 0๋ฒ ์ธ๋ฑ์ค '10'์ ๋ง๋ค ์ ์๋ ๋ถ๋ถ ์์ด์ ์ต๋ ๊ธธ์ด๊ฐ 1์ด๋ค.
- 1๋ฒ ์ธ๋ฑ์ค '20'์ '10'-'20' ์ผ๋ก 2์ด๋ค.
- 2๋ฒ ์ธ๋ฑ์ค '10'์ 1์ด๋ค.
- 3๋ฒ ์ธ๋ฑ์ค '30'์ '10'-'20'-'30' ์ผ๋ก 3์ด๋ค.
- 4๋ฒ ์ธ๋ฑ์ค '20'์ '10'-'20'์ผ๋ก 2๋ค.
- 5๋ฒ ์ธ๋ฑ์ค '50'์ '10'-'20'-'30'-'50'์ผ๋ก 4์ด๋ค.
- ๋ฐ๋ผ์ ์ธ๋ฑ์ค 0-1-3-5๊ฐ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ด๋ค.
- ๊ฐ ์ธ๋ฑ์ค์ ์๊ฐ ๋ถ๋ถ ์์ด์ ๋ง์ง๋ง ์๊ฐ ๋์ ๋๋ฅผ ๊ณ์ฐํด์ ๊ทธ ์ค ์ต๋๊ฐ์ ๊ตฌํด์ผ ํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
int[] dp = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
dp[i] = 1;
}
int max = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
if (arr[j] < arr[i])
dp[i] = Math.max(dp[i], dp[j] + 1);
}
max = Math.max(max, dp[i]);
}
System.out.println(max);
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- n ํฌ๊ธฐ์ ์์ด์ ์
๋ ฅ๋ฐ์ ๋ฐฐ์ด arr์ dp๋ฐฐ์ด์ ์ ์ธํ๊ณ ๊ฐ์ ๋ฃ๋๋ค.
- dp๋ฐฐ์ด์ ์ด๊ธฐ๊ฐ์ 1์ด๋ค. (์์ด์ด ๋ด๋ฆผ์ฐจ์์ธ ๊ฒฝ์ฐ ๋ชจ๋ 1์ด๋์ด)
- max๋ dp ๋ฐฐ์ด์ ์ต๋๊ฐ์ ์ ์ฅํ๋ ๋ณ์
- arr๋ฐฐ์ด์ 0๋ฒ ์ธ๋ฑ์ค๋ถํฐ n-1 ์ธ๋ฑ์ค ๊น์ง ์์ด์ ๋ง์ง๋ง์ผ๋ก ๋๊ณ ๊ณ์ฐ ํด๋ณด๋ฉฐ dp๋ฐฐ์ด์ ์ฑ์ด๋ค.
- arr[0]๋ถํฐ arr[i-1] ๊น์ง ์ค arr[i]๋ณด๋ค ๊ฐ์ด ์์ ๊ฒ๋ค ์ค dp๋ฐฐ์ด์ ๊ฐ์ด ์ต๋์ธ ๊ฐ์ ๊ตฌํ๋ค.
- dp[i]๊ฐ ํฌ๋ค๋ฉด ์ ์ง, dp[j]+1์ด ๋ ํฌ๋ค๋ฉด ๋ณ๊ฒฝํ๋ค.
- max๋ ๊ฒ์ฌํด์ ์ ๋ฐ์ดํธํ๋ค.
- arr[0]๋ถํฐ arr[i-1] ๊น์ง ์ค arr[i]๋ณด๋ค ๊ฐ์ด ์์ ๊ฒ๋ค ์ค dp๋ฐฐ์ด์ ๊ฐ์ด ์ต๋์ธ ๊ฐ์ ๊ตฌํ๋ค.
- max๊ฐ์ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- '๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด' ์ ๋ป์ ์ดํดํ์ง ๋ชปํด์ ์ง๋ฌธ ๊ฒ์ํ์ ์ฐธ๊ณ ํ๋ค.
- ๋ ์ฒ์ ๋ดค์ง๋ง ์๋ฆฌ์ฆ๊ฐ ๋ง์ ๊ฒ์ ๋ณด๋ dp๋ฌธ์ ๋ก ๋ง์ด ๋์ค๋ ๋ฏ ํ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_7576 : ํ ๋งํ (0) | 2023.01.30 |
---|---|
BOJ_11478 : ์๋ก ๋ค๋ฅธ ๋ถ๋ถ ๋ฌธ์์ด์ ๊ฐ์ (0) | 2023.01.30 |
BOJ_2667 : ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2023.01.26 |
BOJ_2644 : ์ด์๊ณ์ฐ (0) | 2023.01.26 |
BOJ_2596 : ๋น๋ฐํธ์ง (0) | 2023.01.25 |