2023. 7. 4. 22:29ㆍ자료구조 및 알고리즘/바킹독 정리
바킹독님 재귀 강의 https://blog.encrypted.gg/943
[실전 알고리즘] 0x0B강 - 재귀
안녕하세요, 재귀 파트를 시작하겠습니다. 지금 자신있게 말할 수 있는게 있는데 이 파트가 정말 어려울 것입니다. 물론 이전의 내용들 중에서도 군데군데 어려운게 있었겠지만 이번 단원에서
blog.encrypted.gg
보고 재귀, 백트래킹 틀 익히자!
[재귀 파트]
순서에 따라 정해져 있는 스택 문제 vs 귀납법
귀납법) 1번 도미노 쓰러져요. k번 도미노 쓰러지면 k+1번 도미노도 쓰러져요.
절차지향적 사고vs귀납법 사고
절차지향적 사고는 그대로 함수를 한줄 한줄 따라가면 된다.
귀납적 사고는 다음 슬라이드 부분을 참고하자.
나는 초보자여서 규칙성을 찾고 그걸 귀납적 사고에 적용할 것이다.
n=1일 때 1이 출력되므로 func1(1)이 1을 출력하고,
func1(2)는 2를 출력하고 func1(1)에서 나오는 1을 출력해서 2 1 이렇게 출력한다.
func1(3)은 3을 출력하고 func1(2)는 2 1을 출력하게 되어서 3 2 1 이렇게 출력한다.
....규칙성 발견!
func(k)는 k k-1 k-2 ... 1을 출력하면
func(k+1)은 k+1 k k-1 ... 1을 출력한다.
[재귀 함수의 조건]
특정 입력에 대해서는 자기 자신을 호출하지 않고 종료되어야 한다 (Base condition) 모든 입력은 base condition
void func1(int n) {
if(n==0) return;
cout<<n<<' ';
func1(n-1);
}
[재귀 Tip]
명확한 함수 정의) 함수의 인자로 어떤 것을 받고 어디까지 계산한 후 자기 자신에게 넘겨줄지 명확하게 정해야 한다.
모든 재귀 함수는 반복문만으로 동일한 동작을 하는 함수를 만들 수 있다.
재귀는 반복문으로 구현했을 때에 비해 코드가 간결하지만 메모리/시간 면에서는 손해를 본다.
한 함수가 자기 자신을 여러 번 호출하게 되면 비효율적일 수 있다.
이미 계산한 거 또 하니까 답이 없다. 다이나믹 프로그래밍으로 O(n)으로 해결하기 나중에
다음 시리즈 링크) https://armembedded.tistory.com/151
[백준] 1629번 곱셈 C++
백준 1629 https://www.acmicpc.net/problem/1629 1629번: 곱셈 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다. www.acmicpc.net 내 풀이의 문제점) recur(a,b,c
armembedded.tistory.com
[계획]
곱셈 문제, Z 문제 풀고 재귀 틀 익히기
출처) 바킹독님 재귀 강의 https://blog.encrypted.gg/943
[실전 알고리즘] 0x0B강 - 재귀
안녕하세요, 재귀 파트를 시작하겠습니다. 지금 자신있게 말할 수 있는게 있는데 이 파트가 정말 어려울 것입니다. 물론 이전의 내용들 중에서도 군데군데 어려운게 있었겠지만 이번 단원에서
blog.encrypted.gg
'자료구조 및 알고리즘 > 바킹독 정리' 카테고리의 다른 글
[바킹독 BFS] 1926 그림부터 BFS 예제 복습 (0) | 2023.07.01 |
---|---|
[바킹독 BFS] 예제 다시 풀어보기 (진행 중) (0) | 2023.04.08 |
[바킹독 시뮬레이션] 정리 중 아직은 뉴비 (0) | 2023.04.08 |
[바킹독 BFS] BFS 기본 문제 유형 분석 (0) | 2023.04.03 |
[바킹독] BFS 정리(진행 중) (0) | 2023.03.27 |