알고리즘/DP

[백준 10942] 팰린드롬? (파이썬 풀이)

파프리카. 2023. 4. 10. 22:34

[백준 10942] 팰린드롬?

 

start 칸부터 end 칸까지 문자열이 팰린드롬인지 알고싶다면, 가운데 문자열인 [start+1:end-1]이 팰린드롬이고 start 칸에 있는 문자와 end 칸에 있는 문자가 같은지 확인하면 된다.

 

제출코드

import sys
input = sys.stdin.readline

n = int(input())
arr = list(map(int,input().split()))
d = [[0]*n for _ in range(n)]
for i in range(n):
    for start in range(n-i):
        end = start + i
        # 문자수 1개 : 시작점과 끝점이 같으므로 팰린드롬
        if start == end:
            d[start][end] = 1
        elif arr[start] == arr[end]:
            # 문자수 2개 : 시작 문자와 끝 문자가 같으면 팰린드롬
            if start+1 == end:
                d[start][end] = 1
            # 문자수 3개 이상 : 시작 문자와 끝 문자가 같고, 
            # 시작 문자와 끝 문자를 뺀 가운데 문자열이 팰린드롬이면 팰린드롬
            elif d[start+1][end-1] == 1:
                d[start][end] = 1

m = int(input())
for _ in range(m):
    s,e = map(int, input().split())
    print(d[s-1][e-1])

참고 : https://velog.io/@himi/%EB%B0%B1%EC%A4%80-10942.-%ED%8C%B0%EB%A6%B0%EB%93%9C%EB%A1%AC