알고리즘(재귀함수,아침 스터디)

김하진·2022년 7월 18일
0
  • 재귀(Recursion)은 어떠한 것을 정의할 때 자기 자신을 참조하는 것을 뜻한다. [위키백과]
👨‍🏫 어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.

"재귀함수가 뭔가요?"
"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어. 마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지. 그의 답은 대부분 옳았다고 하네.
그런데 어느날, 그 선인에게 한 선비가 찾아와서 물었어.
"재귀함수가 뭔가요?"
"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을...

간단한 재귀함수 예제

def count_down(number):
    if number < 0:         # 만약 숫자가 0보다 작다면, 빠져나가자!
        return

    print(number)          # number를 출력하고
    count_down(number - 1) # count_down 함수를 number - 1 인자를 주고 다시 호출한다!


count_down(60)

팩토리얼

팩토리얼은 1부터 어떤 양의 정수 n까지의 정수를 모두 곱한 것을 의미합니다.

예를 들면 아래와 같습니다!
3! 은 3 2 1 = 6,
4! 는 4 3 2 1 = 4 3! = 24

즉,
Factorial(n) = n Factorial(n - 1)
Factorial(n - 1) = (n - 1)
Factorial(n - 2)
....
Factorial(1) = 1
의 구조입니다!

회문 검사

회문은 똑바로읽으나 거꾸로 읽으나 똑같은 문자를 말한다.

input = "abcba"


def is_palindrome(string):
    n = len(string)
    for i in range(n):
        if string[i] != string[n - i - 1]:
            return False
    return True


print(is_palindrome(input))
  • 프로그래머스 실패율 구하기문제

def solution(N, stages):
    fail_rate = {}
    total_user = len(stages)

    for stage in range(1, N+1):
        if total_user != 0:
            fail_user = stages.count(stage)
            fail_rate[stage] = fail_user / total_user
            total_user -= fail_user
        else:
            fail_rate[stage] = 0

    return sorted(fail_rate, key=lambda x : fail_rate[x], reverse=True)

요즘 알고리즘 공부를 계속하고 있는데, 하면서 점점 눈에 보이기는 시작하는 것 같다.

하지만 아직 머리속으로 그려지지 않을때가 많아서 머리속으로 , 손으로 그리는 연습, 그리고 그걸 구현하는 방법을 계속해서 연습해봐

야 겠다.

profile
진킴

0개의 댓글