Koala - 10기/코딩테스트 준비 스터디
[백준 / Python] 17609 회문
beans3142
2023. 3. 26. 18:29
https://www.acmicpc.net/problem/17609

17609번: 회문
각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다.
www.acmicpc.net
문제 분석
난이도
골드5
분류
이분탐색
들어가기 전에
회문이라는 이름이 들어가는 문제들은 정말 태그가 다양하다.
문제

문제 풀이
풀이
좌우 투 포인터인데 같은 문자가 아니라면 왼쪽 한칸 이동 / 오른쪽 한칸 이동 시켜준 뒤 회문판별을 시켜주면 된다.
소스코드
from sys import stdin
input=stdin.readline
for _ in range(int(input())):
s=input().rstrip()
l=0
r=len(s)-1
p=0
able=True
while l<r:
if s[l]==s[r]:
l+=1
r-=1
elif s[l+1]==s[r]:
l+=1
p+=1
else:
able=False
break
if able:
if p==0:
print(0)
continue
elif p==1:
print(1)
continue
able=True
p=0
l=0
r=len(s)-1
while l<r:
if s[l]==s[r]:
l+=1
r-=1
elif s[l]==s[r-1]:
r-=1
p+=1
else:
able=False
break
if able:
if p==0:
print(0)
elif p==1:
print(1)
else:
print(2)
else:
print(2)
후기