전공공부
[BOJ_2491] 수열 본문
설명
연속된 부분 수열 중의 연속된 수의 갯수를 구하는 것이니 간단하게 증가하는 부분 수열 감소하는 부분 수열의 경우의 수를 구한다.
코드
package BOJ.Dynamic_Programming;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ_2491 {
public static void main(String[] args) throws Exception{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer tk = new StringTokenizer(in.readLine()," ");
int N = Integer.parseInt(tk.nextToken());
int[] arr = new int[N];
int[] plusDp = new int[N];
int[] sumDp = new int[N];
tk = new StringTokenizer(in.readLine()," ");
for (int i = 0; i < N; i++){
arr[i] = Integer.parseInt(tk.nextToken());
}
int ans = 1;
plusDp[0] = 1;
for (int i = 1; i < N; i++){
if(arr[i - 1] >= arr[i]){
plusDp[i] = plusDp[i - 1] + 1;
}else{
plusDp[i] = 1;
}
ans = Math.max(ans,plusDp[i]);
}
sumDp[0] = 1;
for (int i = 1; i < N; i++){
if(arr[i - 1] <= arr[i]){
sumDp[i] = sumDp[i - 1] + 1;
}else{
sumDp[i] = 1;
}
ans = Math.max(ans,sumDp[i]);
}
System.out.println(ans);
}
}
2491번: 수열
0에서부터 9까지의 숫자로 이루어진 N개의 숫자가 나열된 수열이 있다. 그 수열 안에서 연속해서 커지거나(같은 것 포함), 혹은 연속해서 작아지는(같은 것 포함) 수열 중 가장 길이가 긴 것을 찾
www.acmicpc.net
'Study > Problem Solving' 카테고리의 다른 글
[BOJ_17175] 피보나치는 지겨웡~ (0) | 2024.03.06 |
---|---|
[BOJ_9461] 파도반 수열 (2) | 2024.03.05 |
[BOJ_15624] 피보나치 수 7 (0) | 2024.03.02 |
[BOJ_10211] Maximum Subarray (0) | 2024.03.01 |
[BOJ_15489] 파스칼의 삼각형 (0) | 2024.02.25 |