백준 재귀 단계: 25501번 팰린드롬 재귀 함수

코린이서현이·2024년 1월 7일
0

🛎️ 25501번 : 팰린드롬 재귀 함수

🤔 일단 팰린드롬 재귀 안쓰는 알고리즘

def palindrome(s):
    s_len = len(s)
    i = 0
    if(s_len % 2 == 0):
        while i < s_len/2 :
            if (s[i-1] != s[-i]) :
                return 0
            i += 1
        return 1
    else:
        while i < (s_len-1)/2 :
            if (s[i-1] != s[-i]) :
                return 0
            i += 1
        return 1


x = int(input())
x_list = [""] * x

for i in range(x):
    x_list[i] = input()

for i in range(x):
    print(palindrome(x_list[i]))
# 중복 코드 없애기
def palindrome(s):
    s_len = len(s)
    i = 0

    while i < (s_len-1)/2 :
        if (s[i-1] != s[-i]) :
            return 0
        i += 1
    return 1

😑 재귀 안써도 되잖아...

🙆‍♀️ 정답 풀이: 재귀 써서 팰린드롬 해결

def palindrome(s,r):
    if(len(s) <= 1):
        return 1,r
    if(s[0] != s[-1]):
        return 0,r
    return palindrome(s[1:-1],r+1)

x = int(input())
x_list = [""] * x

for i in range(x):
    x_list[i] = input()

for i in range(x):
    a,b = palindrome(x_list[i],1)
    print(a, b)

🤔 왜 안됐을까?

나는 계속 아래의 풀이 방법을 이용했다.

def palindrome(s,r):
    if(len(s) <= 1):
        return 1,r
    if(s[0] != s[-1]):
        return 0,r
   	palindrome(s[1:-1],r+1)

📌 재귀 함수의 호출은 스택에 저장된다. return으로 호출의 결과문을 저장하지 않으면 스택에서 값이 날라가 사용할 수 없다. 재귀 호출 문의 결과를 return을 사용해서 이전 호출로 전달되어야한다.

솔직히 모르겠음...🤮 
profile
24년도까지 프로젝트 두개를 마치고 25년에는 개발 팀장을 할 수 있는 실력이 되자!

0개의 댓글