본문 바로가기
BaekJoon/Silver

[BOJ/JAVA] 백준 2491 : 수열 (자바)

by HoonSikE 2022. 3. 26.
반응형
SMALL
문제 정보
  문제명   - 수열
  난이도   - 실버 IV
문제 번호 - 2491번

문제 링크

BOJ_S3_2491_수열

 

2491번: 수열

0에서부터 9까지의 숫자로 이루어진 N개의 숫자가 나열된 수열이 있다. 그 수열 안에서 연속해서 커지거나(같은 것 포함), 혹은 연속해서 작아지는(같은 것 포함) 수열 중 가장 길이가 긴 것을 찾

www.acmicpc.net


문제
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 2
8
9
4 1 3 3 2 2 9 2 3
4
11
1 5 3 6 4 7 1 3 2 9 5
2

알고리즘 분류
● 구현
다이나믹 프로그래밍

소스코드
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
 

BaekJoon List

BOJ Start!! ● [BOJ] 백준 회원가입, 시작하는 법 ● [BOJ] 등급(티어) 및 Solved.AC 적용 ● [BOJ/JAVA] 백준 소스코드 제출 시 유의사항(자바) Bronze ● Bronze V  - ● Bronze IV  - ● Bronze III  -..

han-hoon.tistory.com


  

기회는 준비된 자에게 찾아온다.

 


 

반응형
LIST

댓글