base condition or base case
재귀 함수 사용 팁
O(1.618^n)
메모리 구조에서의 스택 영역에 누적

  • 지역 변수도 스택 메모리에 들어간다.
  • 재귀가 너무 깊거나 지역 변수로 [2000][2000]과 같은 큰 배열 잡으면 메모리 초과가 날 수 있다.
  • int 400만개 = 16 MB

 

** 함수의 정의, base condition, 재귀식을 잘 생각해서 풀어보자 **

 

# 문제 풀이

 

[BOJ] 1629_곱셈 with cpp

시간복잡도 : b가 계속 절반씩 깎이기 때문에 O(logb) #include using namespace std; using LL = long long; LL Power(LL a, LL b, LL c) { if (b == 1) // base condition { return a % c; } LL result = Power(..

hqvfx.tistory.com

 

 

[BOJ] 11729 하노이 탑 이동 순서 with cpp

원판 n개를 a에서 b로 이동하는 함수를 만든다 void func(int a, int b, int n) base condition은 n이 1일 때 a에서 b로 옮기는 것이다 if (n == 1) { cout << a << ' ' << b << '\n'; return; } 나머지 재귀식은..

hqvfx.tistory.com

 

 

[BOJ] 1074_Z with cpp

N(1<= N <= 15)이 주어졌을 때, 2^n * 2^n 배열에서 (r, c)를 방문하는 순서를 출력하는 프로그램을 작성해야 한다 규칙을 보면 배열을 4등분 하여 순서대로 진행하는 것을 알 수 있다 base conditino은 n이 0

hqvfx.tistory.com

 

 

[BOJ] 17478_재귀함수가 뭔가요? with cpp

# 생각 N에 따라 출력되는 문자의 횟수를 세어보면 된다 첫 째줄인 <어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.>는 단독으로 존재하기 때문에 재귀함수에 포함을 시키지 않거

hqvfx.tistory.com

 

 

[BOJ] 2630_색종이 만들기 with cpp

# 생각 전체를 탐색하면서 다 같은 색으로 이루어져있는지를 파악해야 한다 전체를 탐색했을 때 다 같은색으로 이루어져있지 않아 판단이 불가하다면 4개의 사각형으로 나누어 판단해준다 # 전

hqvfx.tistory.com

 

 

[BOJ] 1780_종이의 개수 with cpp

# 생각 같은 숫자로만 채워져 있는지 확인한다 같은 숫자로만 이루어지지 않았을 때 3x3 크기로 나누어 확인한다 입력값이 -1, 0, 1로 이루어져있기 때문에 ans배열에 +1을 해준다 # 전체 코드 #include

hqvfx.tistory.com

 

 

[BOJ] 1992_쿼드트리 with cpp

# 생각 범위 안의 원소가 모두 똑같은지 탐색한다 일치하면 출력하고 탈출하는 base condition, 일치하지 않으면 4등분 하는 재귀식을 작성한다 # 전체 코드 #include using namespace std; // 제한 : 2초, 128MB..

hqvfx.tistory.com

 

 

[BOJ] 2447_별 찍기 - 10 with cpp

# 생각 // PrintStar2 패턴은 가운데에 공백이 있고, 가운데를 제외한 전체는 별이기 때문에 base condition은 별을 넣어준다 N이 3보다 클 경우, 공백으로 채워진 가운데(N/3) * (N/3)의 정사각형을 크기 N/3

hqvfx.tistory.com

 

 

[BOJ] 2448_별 찍기 - 11 with cpp

# 생각 삼각형 모양이기 때문에 배열 크기에 주의한다 패턴을 보면 작은 삼각형이 여러개를 이루는 프랙탈 구조를 가지고 있다 가장 작은 삼각형인 n = 3 일 때 차례로 저장해주고 종료해주면 된

hqvfx.tistory.com

 

 

[BOJ] 14956_Philosopher's walk with cpp

# 생각 문제에 나오는 모양은 Hilbert Curve 모양으로 쿼드트리와 같은 분할정복 재귀문제와 동일한 방법으로 풀 수 있다 base condition은 가장 작은 사각형의 길이가 2^1이기 때문에 side가 2일때 4가지

hqvfx.tistory.com


# 출처

https://blog.encrypted.gg/category/%EA%B0%95%EC%A2%8C/%EC%8B%A4%EC%A0%84%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

'Algorithm > 정리' 카테고리의 다른 글

0x0E,0F - 정렬  (0) 2022.02.28
0x02 - 기초 코드 작성 요령2  (0) 2022.02.15
cpp  (0) 2022.02.10
0x0C - Backtracking  (0) 2022.01.31
0x01 - 기초 코드 작성 요령1  (0) 2022.01.25

+ Recent posts