풀이 방법
- 투포인터로 하나씩 비교한다.
- 만약 좌우가 다른 문자가 나올 경우, left+1해서 검사하고 right-1해서 검사한다.
- 두 검사 결과 중 하나라도 회문이라면 유사회문이다.
전체 코드
def check(left, right):
while left < right:
if s[left] == s[right]:
left += 1
right -= 1
else:
return False
return True
def twopointer(left, right):
while left < right:
if s[left] == s[right]:
left += 1
right -= 1
else:
if check(left+1, right) or check(left, right-1):
return 1
return 2
return 0
T = int(input())
for _ in range(T):
s = input()
print(twopointer(0, len(s)-1))
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[Python] 백준 16234 : 인구 이동 (0) | 2021.04.06 |
---|---|
[Python] 백준 15684 : 사다리 조작 (0) | 2021.03.31 |
[Python] 백준 2531 : 회전 초밥 (0) | 2021.03.31 |
[Python] 백준 1700 멀티탭 스케줄링 (0) | 2021.03.31 |
[Python] 백준 3955 캔디 분배 (확장 유클리드 알고리즘) (0) | 2021.03.29 |