백준 수열

KIMYEONGJUN·2025년 3월 7일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에는 수열의 길이 N이 주어지고, 둘째 줄에는 N개의 숫자가 빈칸을 사이에 두고 주어진다.
N은 1 이상 100,000 이하의 정수이다.

첫째 줄에 가장 긴 길이를 출력한다.

내가 이 문제를 보고 생각해본 부분

입력 처리: BufferedReader를 사용하여 첫 번째 줄에서 수열의 길이 N을 읽고, 두 번째 줄에서 수열의 숫자들을 읽어 배열에 저장한다.
최장 수열 찾기:
첫 번째 반복문에서는 수열이 증가하는 경우의 길이를 계산한다.
두 번째 반복문에서는 수열이 감소하는 경우의 길이를 계산한다.
각 경우에서 최대 길이를 업데이트해준다.
결과 출력: StringBuilder를 사용하여 결과를 저장하고, 한 번에 출력한다.

코드로 구현

package baekjoon.baekjoon_27;

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

// 백준 2491번 문제
public class Main953 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        // 수열의 길이 N 입력
        int N = Integer.parseInt(br.readLine());
        String[] input = br.readLine().split(" ");
        int[] sequence = new int[N];

        // 수열 입력
        for(int i = 0; i < N; i++) {
            sequence[i] = Integer.parseInt(input[i]);
        }

        // 최대 길이 초기화
        int maxLength = 1;
        int currentLength = 1;

        // 증가 또는 감소하는 수열의 길이 계산
        for(int i = 1; i < N; i++) {
            if(sequence[i] >= sequence[i - 1]) {
                currentLength++;
            } else {
                maxLength = Math.max(maxLength, currentLength);
                currentLength = 1;
            }
        }
        maxLength = Math.max(maxLength, currentLength); // 마지막 증가 수열 확인
        currentLength = 1; // 감소하는 경우를 위해 초기화

        for(int i = 1; i < N; i++) {
            if(sequence[i] <= sequence[i - 1]) {
                currentLength++;
            } else {
                maxLength = Math.max(maxLength, currentLength);
                currentLength = 1;
            }
        }
        maxLength = Math.max(maxLength, currentLength); // 마지막 감소 수열 확인

        // 결과 출력
        sb.append(maxLength);
        System.out.println(sb.toString());
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글