📝문제
💡풀이
1) dp 배열을 만들고 1로 초기화한다.
2) 현재 수arr[i]가 이전 수arr[j]보다 크다면 증가하는 수열이므로 dp[i] = dp[j]+1이 될 수 있다.
여기서 10 20 10 30 이 있을 때 i=3라면
dp[3] = dp[1] + 1도 답이 될 수 있고 dp[3] = dp[2] + 1도 답이 될 수 있으므로
두 경우의 수 중 더 큰 값을 구해 dp[3]에 넣어줘야한다.
그러므로 해당 식이 필요하다.
dp[i] = Math.max(dp[i],dp[j]+1);
3) 이후 dp 배열에서 가장 큰 값을 찾으면 정답이다.
전체풀이
import java.util.*;
import java.io.*;
class Main{
public static void main(String args[]) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for(int i = 0; i < N; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
int[] dp = new int[N];
for(int i = 0; i < N; 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);
}
}
}
int max = 0;
for(int i = 0; i < N; i++){
max = Math.max(max, dp[i]);
}
System.out.println(max);
}
}
🤔Review
2주 전에 개인적으로 풀었던 문제가 오늘의 문제로 나왔다. 그럼에도 풀이가 바로 생각나지 않았다;;; 멍청쓰.🫠
'Algorithm' 카테고리의 다른 글
[Algorithm] 99클럽 코테 스터디 23일차 TIL | 백준_LCS(9251번) (2) | 2025.02.19 |
---|---|
백준 1260 다시 풀어보기 (1) | 2025.02.18 |
[Algorithm] 99클럽 코테 스터디 21일차 TIL | 백준_피보나치 함수(1003번) (1) | 2025.02.17 |
[Algorithm] 99클럽 코테 스터디 20일차 TIL | 백준_최소 회의실 개수(19598번) (5) | 2025.02.14 |
[Algorithm] 99클럽 코테 스터디 19일차 TIL | 백준_신입 사원(1946번) (0) | 2025.02.13 |