# 1003 피보나치 함수라는 문제입니다. 해당 문제를 보았을 때, 메모이제이션을 활용하여 먼저 풀었고 재귀를 응용할 수 있는지 확인하며 진행하였습니다. 메모이제이션"""recursion(4) = recursion(3) + recursion(2)-> recursion(4) = recursion(1) + recursion(0) + recursion(1) + recursion(1) + recursion(0) == 2 3recursion(3) = recursion(2) + recursion(1)-> recursion(3) = recursion(1) + recursion(0) + recursion(1) == 1 2recursion(2) = recursion(1) + recursion(0)recursion(1) = 1recu.. 2025. 12. 2. # 4779 칸토어 집합이라는 문제입니다. 문제에 대한 설명은 따로 진행하지 않고 오답노트를 기준으로 작성하겠습니다. 문제의 특성상, 재귀와 메모이제이션을 사용한다면 해결할 수 있는 것은 알았고 재귀에 대해서 먼저 고려했습니다. 재귀 함수재귀로 풀 때, 어떤 부분에서 재귀를 둬야할지 고민을 했습니다. """ 재귀3 : ---------------------------2 : --------- ---------1 : --- --- --- ---0 : - - - - - - - -"""처음에는 빈 공백이 3에서 2로 다운될 때, 3의 제곱만큼 공백이 있고 2에서 1로 다운될 때도 3의 1제곱만큼 공백이 있는 것을 확인하고 다음 포인트를 recursion case로 .. 2025. 12. 1. # 수학 공식 알고리즘 풀이를 위해서 자주 쓰이는 수학 공식에 대해 정리해두려고 합니다. 암기보다는 이해의 관점에서 글을 작성하도록 하겠습니다. 약수약수의 개념은 n이라는 어떤 수가 존재할 때, 나누어 떨어지게 하는 수를 의미합니다. 12의 약수는 1, 2, 3, 4, 6, 12 이런 개념입니다. n = int(input())arr = set()for i in range(1, n + 1): if (n % i == 0): arr.add(i)print(arr)해당 코드처럼 구현한다면 약수를 구할 수 있습니다. 다만 이 때의 시간 복잡도는 \(O(n)\)입니다. from math import sqrtn = int(input())arr = set()for i in range(1, int(sqrt(n)) + 1): if (.. 2025. 11. 30. 이전 1 다음