DonHurry

[Python] ๋ฐฑ์ค€ 17609๋ฒˆ - ํšŒ๋ฌธ ๋ณธ๋ฌธ

Problem Solving

[Python] ๋ฐฑ์ค€ 17609๋ฒˆ - ํšŒ๋ฌธ

_๋„๋… 2024. 1. 31. 12:10

๐Ÿ“– ๋ฌธ์ œ

 

17609๋ฒˆ: ํšŒ๋ฌธ

๊ฐ ๋ฌธ์ž์—ด์ด ํšŒ๋ฌธ์ธ์ง€, ์œ ์‚ฌ ํšŒ๋ฌธ์ธ์ง€, ๋‘˜ ๋ชจ๋‘ ํ•ด๋‹น๋˜์ง€ ์•Š๋Š”์ง€๋ฅผ ํŒ๋‹จํ•˜์—ฌ ํšŒ๋ฌธ์ด๋ฉด 0, ์œ ์‚ฌ ํšŒ๋ฌธ์ด๋ฉด 1, ๋‘˜ ๋ชจ๋‘ ์•„๋‹ˆ๋ฉด 2๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

๐Ÿ”Ž ํ’€์ด

ํˆฌ ํฌ์ธํ„ฐ์™€ ์žฌ๊ท€๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋‹จ์ˆœํžˆ ํšŒ๋ฌธ๋งŒ ํŒ๋ณ„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ•œ ๋ฌธ์ž๋ฅผ ์‚ญ์ œํ–ˆ์„ ๋•Œ ํšŒ๋ฌธ์ด ๋˜๋Š” ๊ฒฝ์šฐ๋„ ํŒ๋ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํˆฌ ํฌ์ธํ„ฐ๋กœ ํƒ์ƒ‰ํ•˜๋‹ค ๋‘ ๋ฌธ์ž๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ, ์™ผ์ชฝ ํฌ์ธํ„ฐ๋งŒ ํ˜น์€ ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ๋งŒ ์˜ฎ๊ธฐ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ 2๊ฐ€์ง€๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. 2๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜ ์ค‘, ๋” ์ข‹์€ ๊ฒฐ๊ณผ๊ฐ’์„ ์ตœ์ข… ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

๐Ÿ’ป ์ฝ”๋“œ

import sys
input=sys.stdin.readline


def palindrome(string, i, j, chance):
    while i < j:
        if string[i] != string[j]:
            # ๊ธฐํšŒ๊ฐ€ ๋‚จ์•„ ์žˆ๋Š” ๊ฒฝ์šฐ, ์™ผ์ชฝ ํฌ์ธํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๋Š” ๊ฒฝ์šฐ์™€ ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๋Š” ๊ฒฝ์šฐ๋กœ ๋ถ„๊ธฐ
            if chance:
                return min(palindrome(string, i+1, j, chance-1), palindrome(string, i, j-1, chance-1))
            return 2

        i += 1
        j -= 1
    
    # ๊ธฐํšŒ๊ฐ€ ๋‚จ์•„์žˆ๋‹ค๋ฉด 0, ์ด๋ฏธ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด 1
    return 0 if chance else 1


T = int(input())
for _ in range(T):
    string = input().rstrip()
    print(palindrome(string, 0, len(string)-1, 1))