17609 - 회문

LeeKyoungChang·2022년 6월 4일
0

Algorithm

목록 보기
139/203
post-thumbnail

📚 17609 - 회문

회문

 

이해

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)

채점 결과1

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글