01-07 02:28
Recent Posts
Recent Comments
Tags
- mysql
- RaspberryPi
- ํ์ด์ฌ
- Spring
- ์กํ๊ณ
- DATABASE
- python
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- DB
- ict๊ณต๋ชจ์
- Naver Cloud
- linux
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- ์จ์ผ๋ํ
- Java
- ICT
- appetizer
- ์๋ฐ
- ICT๋ฉํ ๋ง
- ์คํฝ๋ ํ
- ํ์ด์
- JOBํ๊ณ
- SQL
- ํ์ด์๊ณต๋ชจ์
- TSQL
- ์คํฝ์ค๋น
- ์๋์ด๋ ธ
- API๋ง์ผํ๋ ์ด์ค
- ์ด๋ธ์
- ํ๋ก๋ณด๋ ธ
- Today
- Total
miinsun
[Algorithm]์๊ณ ๋ฆฌ์ฆ ์๋ฐ_74 ์ต๋ ๋ถ๋ถ ์ฆ๊ฐ ์์ด :: DynamicProgramming ๋ณธ๋ฌธ
Algorithm/Java
[Algorithm]์๊ณ ๋ฆฌ์ฆ ์๋ฐ_74 ์ต๋ ๋ถ๋ถ ์ฆ๊ฐ ์์ด :: DynamicProgramming
miinsun 2022. 3. 12. 02:11
๐ฌ ๋ฌธ์ ์ค๋ช
N๊ฐ์ ์์ฐ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์ฃผ์ด์ก์ ๋,
๊ทธ ์ค์์ ๊ฐ์ฅ ๊ธธ๊ฒ ์ฆ๊ฐํ๋(์์ ์์์ ํฐ ์๋ก) ์์๋ค์ ์งํฉ์ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ.
์๋ฅผ ๋ค์ด, ์์๊ฐ 2, 7, 5, 8, 6, 4, 7, 12, 3 ์ด๋ฉด
๊ฐ์ฅ ๊ธธ๊ฒ ์ฆ๊ฐํ๋๋ก ์์๋ค์ ์ฐจ๋ก๋๋ก ๋ฝ์๋ด๋ฉด 2, 5, 6, 7, 12๋ฅผ ๋ฝ์๋ด์ด ๊ธธ์ด๊ฐ 5์ธ ์ต๋ ๋ถ๋ถ ์ฆ๊ฐ์์ด์ ๋ง๋ค ์ ์๋ค.
๐จ ์ ์ถ๋ ฅ ์
์ ๋ ฅ
- ์ฒซ์งธ ์ค์ ์ ๋ ฅ๋๋ ๋ฐ์ดํฐ์ ์ N(3≤N≤1,000, ์์ฐ์)๋ฅผ ์๋ฏธํ๊ณ ,
- ๋์งธ ์ค์ N๊ฐ์ ์ ๋ ฅ๋ฐ์ดํฐ๋ค์ด ์ฃผ์ด์ง๋ค.
8
5 3 7 8 6 2 9 4
์ถ๋ ฅ
- ์ฒซ ๋ฒ์งธ ์ค์ ๋ถ๋ถ์ฆ๊ฐ์์ด์ ์ต๋ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ค.
4
โ
๐ป Solution.java
- dy[i]์๋ arr[i]๋ณด๋ ๊ฐ์ด ์์ผ๋ฉด์ max๊ฐ์ด ๊ฐ์ฅ ํฐ ๊ฐ์ ์ ํํ๋ค.
- ์ ํ๋ ๊ฐ์์ ๋ณธ์ธ์ ํฌํจํด dy[i]๋ฅผ max + 1๋ก ์ ์ฅํด์ค๋ค
- ๋ชจ๋ dy์ค์์ ๊ฐ์ฅ ํฐ ๊ฐ์ด ์ ๋ต์ด ๋๋ค.
/* ์ต๋ ๋ถ๋ถ ์ฆ๊ฐ ์ :: Dynamic Programming */
import java.util.*;
public class Main {
static int [] dy;
public int solution(int[] arr) {
int answer = 0;
dy = new int[arr.length];
dy[0] = 1;
for(int i = 1; i < arr.length; i++) {
int max = 0;
for(int j = i - 1; j >= 0; j--) {
if(arr[j] < arr[i] && dy[j] > max) max = dy[j];
}
dy[i] = max + 1;
answer = Math.max(answer, dy[i]);
}
return answer;
}
public static void main(String[] args){
Main main = new Main();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for(int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
System.out.println(main.solution(arr));
sc.close();
return ;
}
}
'Algorithm > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Comments