DevLog

[패스트캠퍼스 :: 코딩테스트 인강] 6주차 ② 재귀용법 본문

IT 개발/Algorithm 알고리즘

[패스트캠퍼스 :: 코딩테스트 인강] 6주차 ② 재귀용법

Euniverse 2021. 3. 28. 20:59

알고리즘/기술면접 완전 정복 올인원 패키지 Online

 

재귀 용법 - 01. 알고리즘 해결에 중요한 이해

재귀 용법 - 02. 알고리즘 해결에 중요한 재귀 호출 예제와 실습 - 1

재귀 용법 - 03. 알고리즘 해결에 중요한 재귀 호출 예제와 실습 - 2

 


 

2021.03.28

 

재귀 용법은 개념은 정말 이해하기 쉬우면서도

활용하기에는 어렵게만 느껴지는 부분이다.

 

재귀 용법을 사용하면 속도도 빨라지고 더 좋은 알고리즘이 짜이는 것을 알고 있음에도

실질적으로 문제 해결에 사용해서 로직이 진행되는 과정이 생각하기 힘들 때가 많았다.

 

그래서 이번 강의는 더 중요하게 다가왔다.

 

 


 

 

재귀 용법 (recursive call, 재귀 호출)

고급 정렬 알고리즘엥서 재귀 용법을 사용하므로, 고급 정렬 알고리즘을 익히기 전에 재귀 용법을 먼저 익히기로 합니다.

 

1. 재귀 용법 (recursive call, 재귀 호출)

  • 함수 안에서 동일한 함수를 호출하는 형태
  • 여러 알고리즘 작성시 사용되므로, 익숙해져야 함

 

 

예제 - 시간 복잡도와 공간 복잡도

  • factorial(n) 은 n - 1번의 factorial() 함수를 호출해서, 곱셈을 함
    • 일종의 n-1번 반복문을 호출한 것과 동일
    • factorial() 함수를 호출할 때마다, 지역변수 n 이 생성됨
  • 시간 복잡도/공간 복잡도는 O(n-1) 이므로 결국, 둘 다 O(n)

 

 

# 일반적인 형태1
def function(입력):
    if 입력 > 일정값: # 입력이 일정 값 이상이면
        return function(입력 - 1) # 입력보다 작은 값
    else:
        return 일정값, 입력값, 또는 특정값 # 재귀 호출 종료

 

 

 


 

아무래도 재귀 용법이 정해진 알고리즘이라기보다는 활용될 수 있는 부분이기 때문에

다른 강의보다도 실습 문제가 많았다.

 

내가 느끼기에도 전혀 어려운 개념이 아니었음에도 다양한 코딩 문제를 해결할 때 쉽사리 적용이 되지 않는 개념이다.

 

 

적용을 하게 되면 로직이 꼬이면서 머리가 멈추는 그런 느낌... 아는가...

 

재귀 용법에 빨리 익숙해지고 싶다. 

 

 

 

[패스트캠퍼스 100% 환급 챌린지 미션 중입니다.]

 

 

 

 

 

알고리즘 / 기술면접 완전 정복 올인원 패키지 Online. | 패스트캠퍼스

오직 개발자 취업을 위해 만든 알고리즘/기술면접 완벽 대비 강의

www.fastcampus.co.kr