1. 문제 설명


2. 코드
import sys
input = sys.stdin.readline
def recursion(s, l, r, c):
c[0] += 1
if l >= r:
return 1
elif s[l] != s[r]:
return 0
else:
return recursion(s, l+1, r-1, c)
def isPalindrome(s, c):
return recursion(s, 0, len(s)-1, c)
T = int(input())
for _ in range(T):
s = input().strip()
c = [0]
result = isPalindrome(s, c)
print(result, c[0])
3. 풀이 과정
재귀 recursion()함수와 판별 isPalindrome()함수는 가이드가 있다.
따라서 동작 원리를 이해하고, 카운트 c를 추가하면 된다.
c를 리스트로 사용한 이유는 정수는 불변 타입이기 때문이다.
리스트로 사용해서 참조로 전달시켜서 함수에서 다른 함수로 넘어갈 때, 값이 유지될 수 있도록 한다.
테스트 케이스 T를 받아서 for문을 반복한 후,
입력 문자열 s와 초기화 시킨 c를 받아주고
판별 값을 result로 받은 후, result와 카운트 값 c[0]을 출력한다.
( r은 right 인덱스, l은 left 인덱스, c는 Counter, s는 string을 의미한다.)
반응형
'Baekjoon(Python) > 단계별로 풀어보기(Python)' 카테고리의 다른 글
| [백준][19단계 재귀] 4779번 /칸토어 집합 (파이썬/Python) (0) | 2025.10.21 |
|---|---|
| [백준][19단계 재귀] 24060번 /알고리즘 수업 - 병합 정렬 1 (파이썬/Python) (0) | 2025.10.20 |
| [백준][19단계 재귀] 27433번 /팩토리얼 2 (파이썬/Python) (0) | 2025.10.17 |
| [백준][19단계 재귀] 10870번 /피보나치 수 5 (파이썬/Python) (0) | 2025.10.16 |
| [백준][18단계 심화 2] 20920번 /영단어 암기는 괴로워 (파이썬/Python) (0) | 2025.10.15 |