본문 바로가기

22년 2학기 학교공부

0920 알고리즘

목차

    728x90
    반응형
    SMALL

    문제 1

    # n이 2보다 큰 경우 재귀
    # 첫번째, 두번째 피보나치수를 구할 땐 1 반환
    def fibo(n) :
        if n <= 2 :
            return 1
        else :
            return fibo(n-1)+ fibo(n-2)
    
    
    n = int(input())
    
    print(fibo(n))

     

     

     

    문제 2

    def func(n, m) :
        if n % m == 0 :
            return m
        # 최대공약수가 나오지 않은 경우
        # 나눈 수 m과 나머지 n%m을 인자로 재귀
        else :
            return func(m, n % m)
    
    a, b = map(int, input().strip().split(' '))
    
    print(func(a, b))

     

    문제3

    count = 0
    
    def findNum(n) :
        # 가장 바깥 수를 파악하기 위한 전역변수
        global count
        
        # 인자가 2인 경우를 count가 1씩 증가
        if n == 2 :
            count += 1
    
        if n == 1 :
            return 3
    
        # 인자에 2가 처음 들어온 경우,
        # 즉, 가장 바깥 수를 정하는 경우
        # 맨 앞에 0이 올 수 없으니 69, 96, 11, 88 네 경우만 가능하므로 4,
        # 인자에 2가 처음 들어온게 아닌 경우
        # 가장 바깥 수가 아니므로 69, 96, 11, 00, 88 다섯 경우가 가능
        if n == 2 :
            if count == 1 :
                return 4
            else :
                return 5
    
        return findNum(2) * findNum(n-2)
    
    a = int(input())
    
    print(findNum(a))

     

    728x90
    반응형
    LIST