Park DJ
dj0998
Park DJ
전체 방문자
오늘
어제
  • 분류 전체보기 (363)
    • 백준 (363)

공지사항

인기 글

태그

  • 백준 15961
  • 백준 2225
  • 백준 7662
  • 백준 3049
  • 백준 2343
  • Java
  • 백준 1531
  • 백준 1914
  • 백준 12605
  • 백준 1747
  • 백준 15655
  • 백준 12871
  • 백준 3135
  • 백준 8892
  • 백준 14582
  • 백준 4659
  • 자바
  • 백준 15312
  • 백준 2467
  • 백준
  • 백준 16926
  • 백준 6550
  • 백준 10709
  • 백준 1064
  • 백준 16194
  • 백준 1495
  • 백준 2591
  • 백준 24039
  • 백준 7567
  • 백준 1011
hELLO · Designed By 정상우.
Park DJ

dj0998

백준 11055 가장 큰 증가 부분 수열(Java)
백준

백준 11055 가장 큰 증가 부분 수열(Java)

2023. 2. 8. 19:56

https://www.acmicpc.net/problem/11055

 

11055번: 가장 큰 증가 부분 수열

수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수

www.acmicpc.net


 

해석 및 팁

 


 

이 문제는 백준 11053 가장 긴 증가하는 부분 수열 문제와 상당히 유사한 문제입니다. dp[] 배열에 증가 부분의 합을 넣은 뒤 가장 큰 값을 출력하면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int max = -1;
    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();

    for(int i = 0; i < n; i++) {
      dp[i] = arr[i];
      for(int j = 0; j < i; j++) {
        if(arr[j] < arr[i] && dp[i] < dp[j] + arr[i]) dp[i] = dp[j] + arr[i];
      }
    }

    for(int i = 0; i < n; i++) max = Math.max(max, dp[i]);

    System.out.println(max);
  }
}

'백준' 카테고리의 다른 글

백준 2644 촌수계산(Java)  (0) 2023.02.09
백준 1699 제곱수의 합(Java)  (0) 2023.02.08
백준 11051 이항 계수 2(Java)  (0) 2023.02.08
백준 1780 종이의 개수(Java)  (0) 2023.02.08
백준 1406 에디터(Java)  (0) 2023.02.08
    '백준' 카테고리의 다른 글
    • 백준 2644 촌수계산(Java)
    • 백준 1699 제곱수의 합(Java)
    • 백준 11051 이항 계수 2(Java)
    • 백준 1780 종이의 개수(Java)
    Park DJ
    Park DJ

    티스토리툴바