알고리즘 문제 풀이

[백준 - Python] 17609. 회문

김혠 2024. 8. 9. 11:50

문제링크

 

최종코드(코드링크)

for _ in range(int(input())):
    array = input().strip()
    left, right = 0, len(array) - 1
    
    check = 0
    for _ in range(len(array)):
        if left >= right: break
            
        if array[left] == array[right]:
            left += 1
            right -= 1
            continue

        if array[left] == array[right-1]:
            temp = array[left:right]
            if temp == temp[::-1]:
                check = 1
                break

        if array[left+1] == array[right]:
            temp = array[left+1:right+1]
            if temp == temp[::-1]:
                check = 1
                break

        check = 2
        break

    print(check)

 

1. 모든 경우의 수 계산 > 시간초과

def palindrome(char):
    N = len(char) //2
    first = char[:N]
    second = char[-N::]
    if first == second[::-1]: return True
    else: return False

for _ in range(int(input())):
    char = input()
    if palindrome(char): print(0)
    else:
        while True:
            if char[0] == char[len(char)-1]:
                char = char[1:len(char)-1]
            else: break
        
        pseudo = False
        or i in range(len(char)):
            if palindrome(char[0:i] + char[i+1:]):
                pseudo = True
                break
                    
        if pseudo: print(1)
        else: print(2)