본문 바로가기
알고리즘 문제풀이/백준

[백준 15779] Zigzag

by m2162003 2020. 11. 23.

www.acmicpc.net/problem/15779

 

15779번: Zigzag

어떤 수열에서, 연속된 3개의 수를 보았을 때, 그 수가 단조증가 수열이거나, 단조감소 수열인 경우가 없으면 이 수열을 "지그재그 수열" 이라고 말한다. 좀 더 정확하게는, 길이 N의 수열 A가 모

www.acmicpc.net

n이 5000까지이므로 브루트 포스

수열 안에 모든 숫자를 3개씩 확인해본다.

만약 지그재그 수열에 해당한다면 1씩 길이를 늘려주고 max값을 업데이트해준다.

지그재그 수열이 깨지면 다시 최소 지그재그 수열길이인 2부터 시작한다.

 

#include <stdio.h>
#include <algorithm>

using namespace std;

int arr[5000];
int main(void)
{
  int n;
  scanf("%d", &n);

  for (int i = 0; i < n; i++)
  {
    scanf("%d", &arr[i]);
  }

  int maxLen = 2, tmp = 2;
  for (int i = 0; i < n - 2; i++)
  {
    if (arr[i] <= arr[i + 1] && arr[i + 1] <= arr[i + 2])
    {
      tmp = 2;
    }
    else if (arr[i] >= arr[i + 1] && arr[i + 1] >= arr[i + 2])
    {
      tmp = 2;
    }
    else
    {
      tmp++;
    }
    maxLen = max(maxLen, tmp);
  }
  printf("%d\n", maxLen);
  return 0;
}

댓글