[Java] 백준 / 수열 / 2491

정현명·2022년 2월 27일
0

baekjoon

목록 보기
77/180

[Java] 백준 / 수열 / 2491

문제

문제 링크

접근 방식

  1. 증가하는 수열 길이의 변수를 asc, 감소하는 수열 길이의 변수를 desc로 선언한다
  2. 수열의 이전 수와 현재 수를 비교하여 이전보다 증가했으면 asc는 증가시키고 desc와 answer를 비교하여 더 큰 값을 answer에 저장하고 desc를 1로 초기화 한다 ( 반대도 같음 )
  3. 수열의 이전 수와 현재 수가 같으면 asc와 desc 모두 증가시킨다
  4. 마지막에 asc, desc, answer 를 비교하여 가장 큰 값을 출력한다


코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main_2491 {

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int asc = 1;
		int desc = 1;
		int pre;
		int now = -1;
		int answer = 1;
		for(int i=0;i<N;i++) {
			pre = now;
			now = Integer.parseInt(st.nextToken());
			
			
			if(pre == -1) {
				continue;
			}
			
			else if(pre < now) {
				asc++;
				answer = Math.max(answer, desc);
				desc = 1;
			}
			else if(pre > now) {
				desc++;
				answer = Math.max(answer, asc);
				asc = 1;
			}
			else {
				asc++;
				desc++;
			}
			
		}
		
		answer = Math.max(Math.max(asc, desc), answer);
		
		System.out.println(answer);
	}

}
profile
꾸준함, 책임감

0개의 댓글