Baekjoon/IM Level

[백준] 25501 재귀의 귀재 (브론즈2)

hellosonic 2023. 2. 21. 11:31

문제 요약

나의 코드 및 설명 

  • t : 테스트케이스 입력
  • s : 문자열을 리스트에 저장
  • recursion(s,l,r) : 문자열 s의 인덱스 l의 값과 인덱스 r의 값을 비교한다.
    이 때, l이 1씩 증가, r이 1씩 감소 될 때 문자열의 문자를 비교한다.
    l이 r보다 크거나 같아지는 경우(팰린드롬일 경우) 1을 리턴, 그렇지 않을 경우 0을 리턴한다.
  • 전역변수인 count에 접근하기 위해 global 키워드로 변수를 재선언 하였다.
  • recursion() 함수가 동작할 때 마다 count 값이 1씩 증가하도록 작성하였다.
t = int(input())
s = []
for i in range(t):
    s.append(input())


def recursion(s,l,r):
    global count
    count+=1
    if l >= r:
        return 1
    elif s[l] != s[r]:
        return 0
    else:
        return recursion(s, l+1, r-1)

  
def isPalindrome(s):
    return recursion(s,0,len(s)-1)

# for in_s in s:
#     count = 0
#     print(isPalindrome(in_s), count)

for in_s in s:
    count = 0
    print(recursion(in_s,0,len(in_s)-1),count)

피드백

재귀함수의 이해

재귀함수의 이해가 많이 부족하다고 생각되어서, 백준-단계별로 풀어보기-재귀함수 문제를 풀어보았다.

문제에 힌트 코드가 있어서 어려움은 없었으나, 이번 문제 풀이의 목적이 재귀함수에 대한 이해인 만큼 Solved 하는 것에 목표하지 않고 이해하는 것을 목표로 했다.

아직은 미숙하여 반복 숙달이 필요해보인다.