반응형
SMALL
문제 정보
문제명 - 수열
난이도 - 실버 IV
문제 번호 - 2491번
문제 링크
문제
0에서부터 9까지의 숫자로 이루어진 N개의 숫자가 나열된 수열이 있다.
그 수열 안에서 연속해서 커지거나(같은 것 포함), 혹은 연속해서 작아지는(같은 것 포함) 수열 중 가장 길이가 긴 것을 찾아내어 그 길이를 출력하는 프로그램을 작성하라.
예를 들어 수열 1, 2, 2, 4, 4, 5, 7, 7, 2 의 경우에는 1 ≤ 2 ≤ 2 ≤ 4 ≤ 4 ≤ 5 ≤ 7 ≤ 7 이 가장 긴 구간이 되므로 그 길이 8을 출력한다.
수열 4, 1, 3, 3, 2, 2, 9, 2, 3 의 경우에는 3 ≥ 3 ≥ 2 ≥ 2 가 가장 긴 구간이 되므로 그 길이 4를 출력한다.
또 1, 5, 3, 6, 4, 7, 1, 3, 2, 9, 5 의 경우에는 연속해서 커지거나 작아지는 수열의 길이가 3 이상인 경우가 없으므로 2를 출력하여야 한다.
입력
첫째 줄에는 수열의 길이 N이 주어지고, 둘째 줄에는 N개의 숫자가 빈칸을 사이에 두고 주어진다. N은 1 이상 100,000 이하의 정수이다.
출력
첫째 줄에 가장 긴 길이를 출력한다.
예제 입력/출력
예제 입력 예제 출력 9
1 2 2 4 4 5 7 7 28 9
4 1 3 3 2 2 9 2 34 11
1 5 3 6 4 7 1 3 2 9 52
알고리즘 분류
● 구현
● 다이나믹 프로그래밍
소스코드
package Lv2_Silver;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
/**
* @author HanHoon
* @category 구현, 다이나믹 프로그래밍
* https://www.acmicpc.net/problem/2491
*/
public class BOJ_S3_2491_수열 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder str = new StringBuilder();
StringTokenizer st = null;
int max = 1, upcnt = 1, downcnt = 1;
// N개의 숫자
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
st = new StringTokenizer(br.readLine(), " ");
// 1번째 값을 받아줌
arr[0] = Integer.parseInt(st.nextToken());
for (int i = 1; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
// 숫자가 같으면 upcnt, downcnt 둘다 카운트+1
if (arr[i - 1] == arr[i]) {
upcnt++;
downcnt++;
}
// 숫자가 커진다면 upcnt+1, downcnt 초기화
else if (arr[i - 1] < arr[i]) {
upcnt++;
downcnt = 1;
}
//숫자가 작아진다면 upcnt 초기화, downcnt+1
else if (arr[i - 1] > arr[i]) {
upcnt = 1;
downcnt++;
}
// upcnt, downcnt 최곳값 갱신
if(max < upcnt) max = upcnt;
else if(max < downcnt) max = downcnt;
}
str.append(max);
System.out.print(str.toString());
br.close();
}
}
BaekJoon List
기회는 준비된 자에게 찾아온다.
반응형
LIST
'BaekJoon > Silver' 카테고리의 다른 글
[BOJ/JAVA] 백준 10158 : 개미 (자바) (0) | 2022.03.26 |
---|---|
[BOJ/JAVA] 백준 2559 : 수열 (자바) (0) | 2022.03.26 |
[BOJ/JAVA] 백준 10157 : 자리배정 (자바) (0) | 2022.03.26 |
[BOJ/JAVA] 백준 1244 : 스위치 켜고 끄기 (자바) (0) | 2022.03.26 |
[BOJ/JAVA] 백준 2304 : 창고 다각형 (자바) (0) | 2022.03.26 |
댓글