https://swexpertacademy.com/main/code/problem/problemDetail.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
접근 방법
DP로 풀었다. N+1 크기의 숫자 배열과 N+1 크기의 DP 배열을 사용했다.
왼쪽부터 차례로, 해당 값이 왼쪽 값보다 클 경우 해당 값의 DP와 왼쪽 값의 DP+1 중 더 큰 값을 해당 값의 DP에 저장했다.
숫자 배열의 처음 값은 0이므로 단번에 해당 값을 포함할 때의 최대 길이를 저장할 수 있다.
그래서 매번 전체 최대 길이도 갱신했다.
소스 코드
import java.util.*;
import java.io.*;
class Solution {
static int[] dp;
static int[] num;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
for(int t=1; t<=T; t++) {
int N = sc.nextInt();
dp = new int[N+1];
num = new int[N+1];
for(int i=1; i<=N; i++)
num[i] = sc.nextInt();
int val = 0;
for(int i=0; i<=N; i++) {
for(int j=0; j<i; j++) {
if(num[i] > num[j]) {
dp[i] = Math.max(dp[i], dp[j]+1);
if(val < dp[i])
val = dp[i];
}
}
}
System.out.println("#" + t + " " + val);
}
}
}
'코테 > 자바' 카테고리의 다른 글
[SWEA] 5215. 햄버거 다이어트 (0) | 2023.05.18 |
---|---|
[SWEA] 3750. Digit sum (0) | 2023.05.18 |
[SWEA] 4615. 재미있는 오셀로 게임 (0) | 2023.05.18 |
[SWEA] 1226. 미로1 (0) | 2023.05.18 |
[SWEA] 2817. 부분 수열의 합 (0) | 2023.05.18 |