

|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import sys
input = sys.stdin.readline
N = int(input()) + 1
arr = [0] + list(map(int, input().split()))
M = int(input())
dp = [[0] * N for _ in range(N)]
# dp table initialization
for i in range(N):
dp[i][i] = 1
for i in range(N-1):
if arr[i] == arr[i + 1]: dp[i][i + 1] = 1
for interval in range(2, N): # 간격 설정
for start in range(N-interval): # 시작점
end = start + interval # 종료점
if arr[start] == arr[end] and dp[start + 1][end - 1] == 1:
dp[start][end] = 1
questions = [list(map(int, input().split())) for _ in range(M)]
for start, end in questions:
print(dp[start][end])
|
cs |
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
| [구현] BOJ 21608 상어 초등학교 (0) | 2023.08.08 |
|---|---|
| [DP] BOJ 1509 펠린드롬 분할 (0) | 2023.08.03 |
| [이분탐색] BOJ 1477 휴게소 세우기 (0) | 2023.07.31 |
| [수학] BOJ 1111 IQ Test (0) | 2023.07.20 |
| [BFS] BOJ 13859 숨바꼭질 3 (0) | 2023.07.20 |