티스토리 뷰

Algorithm

[백준] S2 2491 수열 (java)

코딩브론즈 2021. 1. 4. 03:07

www.acmicpc.net/problem/2491

 

2491번: 수열

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

www.acmicpc.net

 

풀이

 

1) 수열을 배열에 저장

2) >= 탐색 하여 max 를 구함

3) <= 탐색 하여 max2 를 구함

4) max와 max2 중 큰 값을 출력

 

주의사항

 

1) 문제를 잘 읽자

 

package com.baekJoon;

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

public class BJ_S2_2491_수열 {
	static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
	static StringTokenizer tokens;
	static int N, arr[];
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		input = new BufferedReader(new StringReader(src));
		N = Integer.parseInt(input.readLine());
		arr = new int[N];
		tokens = new StringTokenizer(input.readLine());
		int len = 1, max = 1;
		for(int i=0; i<N; i++) {
			arr[i] = Integer.parseInt(tokens.nextToken());
		}
		for(int i=0; i<N-1; i++) {
			if(arr[i] <= arr[i+1]) {
				len++;
			}else {
				if(max < len) {
					max = len;
				}
				len = 1;
			}
		}
		//
		int len2 = 1, max2 = 1;
		for(int i=0; i<N-1; i++) {
			if(arr[i] >= arr[i+1]) {
				len2++;
			}else {
				if(max2 < len2) {
					max2 = len2;
				}
				len2 = 1;
			}
		}
		
		if(max2 < len2) {
			max2 = len2;
		}
		if(max < len) {
			max = len;
		}
		System.out.println(Math.max(max, max2));
	}

	static String src =
			"9\r\n" + 
			"9 8 9 6 5 4 3 2 1";
}

 

 

후기

 

 구제불능인 나는 또 문제를 대충읽고 >= 만 구하는줄 알고 제출해버렸다.

문제좀 똑바로 읽자.

알고리즘 분류에 dp라고 쓰여있는데 이유를 모르겠다. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함