알고리즘/DP
[백준 10942] 팰린드롬? (파이썬 풀이)
파프리카.
2023. 4. 10. 22:34
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