[백준] 25501번(재귀의 귀재 +전역변수)

·2023년 2월 9일

백준 문제풀이

목록 보기
49/159

백준 25501번


최종 제출 코드

import sys
input = sys.stdin.readline
count = [0]

# 재귀함수의 호출 횟수를 체크하기 위한 함수
def count_num():
  count[0] += 1

def recursion(s, l, r):
  count_num()
  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)

number = int(input())

for i in range(number):
  print(isPalindrome(input().rstrip('\n')), count[0])
  count[0]=0
  • 입력값을 input()으로 받으면 \n까지 문자열에 포함되어 팰린드롬 단어여도 0을 출력한다
    => input().rstrip('\n')으로 문자열에서 마지막 줄바꿈 문자를 제거해준다
  • recursion() 함수를 호출할 때마다 count_num() 함수를 호출해 재귀함수 호출 횟수 검사
  • count 변수는 코드 어디에서나 접근 및 수정이 가능하도록 배열로 선언
  • 결과값을 출력한 이후에는 다시 0으로 초기화해준다

전역변수

  • 전역변수는 지역에서 참조는 가능하지만 변경은 불가능
  • 변경 가능하게 만들어주려면 지역에서 global 변수명으로 선언한 후 이용하면 된다

전역변수를 이용한 코드

import sys
input = sys.stdin.readline
count = 0

def count_num():
  # local에서 전역변수를 이용하는 방법!
  global count
  count += 1

def recursion(s, l, r):
  count_num()
  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)

number = int(input())

for i in range(number):
  print(isPalindrome(input().rstrip('\n')), count)
  count=0

전역변수 사용 방법 참고

profile
백엔드 개발자가 되고 싶어요(22.8.15~)

0개의 댓글