0 : 회문, 앞 뒤 방향으로 볼 때 같은 순서의 문자로 구성된 문자열
1 : 우사회문, 한 문자를 삭제하여 회문으로 만들 수 있는 문자열
2 : 이외
두 번의 반복문을 이용하면 된다.
첫 번째로는 left에 0을 주고 right에는 1을 준다.
left += 1
, right -= 1
을 하면서 left >= right
가 될 때까지 반복문을 돌린다.
만약, arr[left] != arr[right]
일 경우, 우사회문 또는 이외일 수 있으므로 left + 1, right
또는 left, right - 1
를 각각 인덱스로 주어 두 번째 반복문을 돌리면서 만약 arr[left] != arr[right]
가 한 번 나왔다면 우사회문이고, 두 번 나왔다면 이외이다.
import sys
read = sys.stdin.readline
t = int(read())
def in_solution(w, l, r):
while l < r:
if w[l] != w[r]:
return False
else:
l += 1
r -= 1
return True
def solution(w, l, r):
if w[:] == w[::-1]:
return 0
else:
while l < r:
if w[l] != w[r]:
result1 = in_solution(w, l+1 , r)
result2 = in_solution(w, l, r-1)
if result1 or result2:
return 1
else:
return 2
else:
l += 1
r -= 1
return 0
for i in range(t):
alphabet = list(read().rstrip())
left = 0
right = len(alphabet) - 1
answer = solution(alphabet, left, right)
print(answer)