1import sys
2input = sys.stdin.readline
3
4N = int(input())
5L = list(map(int, input().split()))
6
7dp = [[0]*N for _ in range(N)]
8
9for i in range(N):
10 dp[i][i] = 1
11 if i < N-1 and L[i] == L[i+1]:
12 dp[i][i+1] = 1
13
14for i in range(N, -1, -1):
15 for j in range(i+1, N):
16 if dp[i+1][j-1] and L[i] == L[j]:
17 dp[i][j] = 1
18
19for i in range(int(input())):
20 S, E = map(int, input().split())
21 print (dp[S-1][E-1])
-
인터넷을 참고했다 쉽지 않은 문제였다
-
dp표를 만들어서 해결했다
S\E 1 2 1 3 1 2 1 1 1 0 1 0 0 0 1 2 1 0 0 0 1 0 1 1 0 1 0 1 3 1 0 0 0 1 1 0 1 2 1 0 1 1 -
22, 33 등 길이가 2인 펠린드롬도 존재한다는 것을 염두해두어야 한다