대왕휴지의 개발 공부

[백준 25501번] 재귀의 귀재 (C언어 and 파이썬) : 문제 풀이 없음 본문

프로그래밍/백준 문제

[백준 25501번] 재귀의 귀재 (C언어 and 파이썬) : 문제 풀이 없음

대왕휴지 2023. 1. 30. 00:18

https://www.acmicpc.net/problem/25501

 

25501번: 재귀의 귀재

각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다.

www.acmicpc.net

 

C언어

#include <stdio.h>
#include <string.h>

int count = 0;
int recursion(const char *s, int l, int r);
int isPalindrome(const char *s);

int main()
{
    int loopNum = 0;
    char s[1001];

    scanf("%d", &loopNum);

    for (int i = 0; i < loopNum; i++)
    {
        scanf("%s", &s);
        printf("%d ", isPalindrome(s));
        printf("%d\n", count);
    }

    return 0;
}

int recursion(const char *s, int l, int r)
{
    count++;
    if (l >= r)
        return 1;
    else if (s[l] != s[r])
        return 0;
    else
        return recursion(s, l + 1, r - 1);
}
int isPalindrome(const char *s)
{
    count = 0;
    return recursion(s, 0, strlen(s) - 1);
}

 

 

 

 

 

파이썬

# -*- coding: utf-8 -*-5
# 백준 25501번 재귀의 귀재  문제 - 단계별 풀어보기: 재귀
import sys

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):
    count = 0
    return Recursion(s, 0, len(s)-1)


loopNum = int(sys.stdin.readline())  # 한개의 정수를 받겠다는 뜻.
# sys의 사용이유 : 시간 초과를 예방하기 위함.

s = ""
str = ""
count = 0


for i in range(loopNum):
    s = sys.stdin.readline().rstrip()
    count = 0
    print(IsPalindrome(s), count)

다좋은데.. 파이썬 함수를 어따 둬야하는지 헷갈린다.

다른 사람들 코드 보니깐.. 맨위에 두는 게 보편적인 것 같긴한데..

근데 또 막 함수를 for문안에 넣는 사람도 있어서 헷갈려....

 

그리고 전역 변수 사용법도 헷갈렸다.