반응형
코드
import sys
def check(word,l,r):
while l < r:
if word[l] == word[r]:
l += 1
r -= 1
else:
l_remove = check2(word,l+1,r)
r_remove = check2(word,l,r-1)
if (l_remove or r_remove):
return 1
else:
return 2
return 0
def check2(word,l,r):
while l < r:
if word[l] == word[r]:
l += 1
r -= 1
else:
return False
return True
t = int(input())
for _ in range(t):
word = sys.stdin.readline().rstrip()
l = 0
r = len(word)-1
print(check(word,l,r))
설명
check 함수에서는 문자열이 회문인지 투 포인터를 이용해 비교를 해서 확인을 한다. 모두 같으면 0을 반환해준다.
만약 같지 않은 부분이 있으면 check2 함수에서 왼쪽 문자를 하나 삭제한 후 검사를 하거나 오른쪽 문자 하나를 삭제한 후 검사를 한다. 이때 유사 회문이 되면 True를 반환하고 check 함수에서 1을 반환해준다.
반응형
'알고리즘 > 문자열' 카테고리의 다른 글
[백준][Python] 16916번 부분 문자열 (0) | 2022.07.01 |
---|---|
[백준][Python] 20437번 문자열 게임 2 (0) | 2022.07.01 |
[백준][Python] 20291번 파일 정리 (0) | 2022.06.29 |
[백준][Python] 9342번 염색체 (0) | 2022.06.28 |
[백준][Python]6550번 부분 문자열 (0) | 2022.06.28 |
댓글