bong-u/til

백준 - 10942 : 팰린드롬? (G4)

수정일 : 2024-11-15

 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인 펠린드롬도 존재한다는 것을 염두해두어야 한다