Problem Solving/BOJ

[백준 / BOJ] C++ 27972 악보는 거들 뿐

nageune 2023. 4. 21. 10:28
728x90
반응형

27972번: 악보는 거들 뿐

 

문제

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

 

27972번: 악보는 거들 뿐

키위새는 피아노를 잘 치고 싶었지만 악보를 볼 줄 몰랐다. 그러다 동영상 사이트에서 수열만 보고 피아노를 연주하는 동영상을 찾아냈다! 하지만 동영상에서 보여주는 수에 맞는 음을 누르자

www.acmicpc.net

 

 

풀이

음의 높낮이가 변하면 수를 1씩 늘리고 줄이기만 하므로 가장 긴 연속된 증가/감소하는 부분 수열의 길이가 정답이 된다. 연속이 끊길 때 길이 초기화를 1로 해야 함에 주의하자.

 

 

코드

#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int m, a = 1, b = 1, ans = 0;
  cin >> m;
  vector<int> v(m, 0);
  for (int i = 0; i < m; i++) {
    cin >> v[i];
    if (i == 0)
      continue;
    if (a == 1 && b == 1) {
      if (v[i] > v[i - 1]) {
        a++;
      } else if (v[i] < v[i - 1]) {
        b++;
      }
    } else if (a > 1) {
      if (v[i] > v[i - 1]) {
        a++;
      } else if (v[i] < v[i - 1]) {
        b++;
        ans = max(ans, a);
        a = 1;
      }
    } else {
      if (v[i] > v[i - 1]) {
        a++;
        ans = max(ans, b);
        b = 1;
      } else if (v[i] < v[i - 1]) {
        b++;
      }
    }
  }
  ans = max(ans, max(a, b));
  cout << ans;
  return 0;
}

 

728x90
반응형