https://www.acmicpc.net/problem/11053
๐ฉ๋ฌธ์

๐๋ฌธ์ ํด๊ฒฐ(dp)
1. ์์ด์ ํฌ๊ธฐ N์ ์ ๋ ฅ๋ฐ๋๋ค.
2. ์์ด์ ์ ๋ ฅ๋ฐ๋๋ค.
3. dp์๋ ๋ณธ์ธ ํฌํจ ๋ฐ ๋ณธ์ธ๋ณด๋ค ์์ ์์๋ฅผ ๋ฃ๋๋ค.
3-1. ์๊ธฐ ์์ ์ ๋จผ์ ๋ฃ๊ณ ์์ํ๋ค dp[i]=1
3-2. ์ด์ ๊ฐ๋ณด๋ค ์์ ์ด ๋ ํฌ๋ฉด ์ด์ ๊น์ง ๊ณ์ฐ๋ ๊ธธ์ด์ +1์ ํด์ฃผ๊ณ , ํ์ฌ ์์ ์ด ๊ฐ์ง๊ธธ์ด์ +1 ๋ ๊ธธ์ด์ค ๋ ํฐ ๊ฐ์
์๊ธฐ ์์ ์ ๊ธธ์ด๋ก ๊ฐ์ง๋ค
4. ์ด์ ๊ฐ๊ณผ ๋น๊ตํ๋ ๋ฐ๋ณต๋ฌธ์ด ์ข ๋ฃ๋๋ฉด ์ต๋๊ฐ์ ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅํด์ค๋ค.
5. ์ต์ข ์ ์ผ๋ก for๋ฌธ์ด ๋๋๋ฉด ๊ฒฐ๊ณผ๊ฐ์ ์ถ๋ ฅํ๋ค
import java.io.*;
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()); //์์ด์ ํฌ๊ธฐ
String [] str = br.readLine().split(" ");
int [] arr = new int[n]; //์์ด
int [] dp = new int[n]; // ๋ถ๋ถ ์์ด ์ต๋ ๊ธธ์ด
int result =0;
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(str[i]);
dp[i] = 1; // ์๊ธฐ์์
for (int j = 0; j < i; j++) {
if (arr[i] > arr[j]) {
dp[i] = Math.max(dp[i], dp[j] + 1);
}
}
result = Math.max(result, dp[i]);
}
System.out.println(result);
}
}