본문 바로가기
Programming/BOJ

[C/C++] 백준 #2491 수열(구현)

by 작은별하나 2023. 5. 23.
반응형

#2491 문제는 간단하게 구현만 하면 되는 문제입니다.

 

number series

https://www.acmicpc.net/problem/2491

 

2491번: 수열

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

www.acmicpc.net

문제를 해결하는 방법은 간단합니다.

이전수와 비교해서 감소하지 않는 값이면, inc값을 1 증가하고 그렇지 않으면 1로 설정을 합니다.

마찬가지로 증가하지 않는 값이면, dec값을 1 증가하고, 그렇지 안으면 1로 설정을 합니다.

이렇게 얻어진 값 중, 최대값을 기록한 후에 그 값을 출력하면 됩니다.

 

동적 계획법이 알고리즘에 적혀있기는 하지만, 실제로 동적계획법을 이용할 필요는 없습니다.

 

제가 작성한 소스입니다.

//------------------------------------------------
//    baekjoon #2491
//        - by Aubrey Choi
//        - created at 2019-08-03
//------------------------------------------------
#include <stdio.h>

int main()
{
    int n, inc=1, dec=1, si=1, p, s;
    scanf("%d%d", &n, &p);
    while(--n)
    {
        scanf("%d", &s);
        if(s >= p) inc++; else inc=1;
        if(s <= p) dec++; else dec=1;
        p=s;
        if(inc>si) si=inc;
        if(dec>si) si=dec;
    }
    printf("%d\n", si);
    return 0;
}
728x90

댓글