ios_base... 을 안해주면 시간초과가 났던 문제
처음에 for문으로 돌려도 시간초과 안날 것 같아서 해봤는데 시간초과가 났다. 
근데 DP로 짜니 for문보다 훨씬 빠르고 깔끔하게 짜졌다. 좀 익숙해 진 것 같다. 

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
int tb[2001];
int cache[2001][2001];
int go(int a, int b) {
       if (b - a<1) {
              return 1;
       }
       if (cache[a][b] != -1) {
              return cache[a][b];
       }
       int& ret = cache[a][b] = 0;
       if (tb[a] == tb[b]) {
              ret = go(a + 1, b - 1);
       }
       else {
              ret = 0;
       }
       return ret;
}
int main(void)
{
       ios_base::sync_with_stdio(false);
       cin.tie(NULL);
       memset(cache, -1, sizeof(cache));
       int n;
       cin >> n;
       for (int i = 0; i<n; ++i) {
              cin >> tb[i];
       }
       int t;
       cin >> t;
       while (t--) {
              int a, b;
              cin >> a >> b;
              cout << go(a - 1, b - 1) << '\n';
       }
       return 0;
}


+ Recent posts