문제 요약
나의 코드 및 설명
- 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 하는 것에 목표하지 않고 이해하는 것을 목표로 했다.
아직은 미숙하여 반복 숙달이 필요해보인다.
'Baekjoon > IM Level' 카테고리의 다른 글
[백준] 2810 컵홀더 (브론즈1) (0) | 2023.02.24 |
---|---|
[백준] 2563 색종이 (실버5) (0) | 2023.02.23 |
[백준] 2527 직사각형 (실버1) (0) | 2023.02.23 |
[백준] 2477 참외밭 (실버2) (0) | 2023.02.23 |
[백준] 11047 동전 0 (실버4) (0) | 2023.02.21 |