-
boj)11055 - 가장 큰 증가 부분 수열PS/boj 2020. 9. 19. 20:34
import java.io.*; import java.util.StringTokenizer; public class boj_11055 { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static StringTokenizer st; static int[] dp; static int[] val; static int n, ans; public static void main(String[] args) throws IOException { n = Integer.parseInt(br.readLine()); dp = new int[n+1]; val = new int[n+1]; st = new StringTokenizer(br.readLine()); for (int i = 1; i <= n; i++) { val[i] = Integer.parseInt(st.nextToken()); dp[i] = val[i]; } for (int i = 1; i <= n; i++) { for (int j = 1; j < i; j++) { if (val[j] < val[i] && dp[i] < dp[j] + val[i]) { dp[i] = dp[j] + val[i]; } } } for (int i = 1; i <= n; i++) { if (ans < dp[i]) ans = dp[i]; } System.out.println(ans); } }
- dp[n] -> val[n]을 마지막으로 하는 가장 큰 증가하는 부분수열의 합
- dp의 초기값을 val로 저장
- 인덱스가 나보다 작고, 값도 나보다 작은 값에 대하여 그 전까지의 합 : dp[j] + 현재 나의 값 : val[i] 을
구하고 그 중에 최댓값을 dp에 저장
- dp 배열중에서 가장 큰 값 출력
'PS > boj' 카테고리의 다른 글
boj)11054 - 가장 긴 바이토닉 부분 수열 (0) 2020.09.20 boj)11722 - 가장 긴 감소하는 부분 수열 (0) 2020.09.20 boj)1932 - 정수 삼각형 (0) 2020.09.19 boj)2156 - 포도주 시식 (0) 2020.09.19 boj)9465 - 스티커 (0) 2020.09.19