오늘 한 일
- 경기대 배상원 교수님의 재귀 강의를 들으며 재귀에 대해 조금 더 이해했다.
- 어제 공부한 이진 탐색 기반의 문제를 풀었다.
- CSAPP 2장 1, 2절을 공부했다.
- 오전에는 CLRS를 읽었다.
배운 점
-
재귀에 대해 한층 더 이해가 깊어진 것 같다. 처음엔 이해가 잘 안 갔는데, reduction을 통해 문제를 더 작은 부분 문제로 줄이고, 더 작은 인스턴스로 문제를 줄이는 것은 같지만
g(x)라는 별개의 함수를 호출하는 것이 아닌f(x)가 자기 자신을 호출하는 차이일 뿐이라는 것을 깨달았다. 더 깊은 스택의f(x)를 호출할 때는 반드시 입력이 줄어들어야 하고, 이 줄어든 입력이 base case에 도달해야 재귀 호출이 종료된다는 것을 명확히 했다. -
재귀뿐만 아니라, 알고리즘 문제를 바라보는 시야 자체가 넓어졌다. 호출하는 시점에서 그 함수의 내부 동작까지는 고민할 필요가 없다. 단지 지금 작성 중인 함수 내에서 다른 함수(혹은 자기 자신)를 호출했을 때, 그 리턴값이 어떻게 나올지만 생각하면 된다. 호출된 함수의 리턴값이 약속대로 나오도록 보장하는 것은 호출된 함수가 맡아야 할 역할이라는 설명이 이해에 크게 도움이 되었다.
-
Simplify & Delegate.이 말을 참고해야겠다.
어려웠던 점 & 해결
-
이진 탐색 관련 문제를 4개 정도 풀었는데, 전부 어려웠다. 1주차에 비해 난이도가 많이 오른 것 같다. 그래도 1주차에 익힌 공부법들이 조금씩 효과를 보는 것 같다.
-
시간이 너무 모자란 것 같다. 하루가 짧다. 좀 더 가진 시간을 알차게 써봐야겠다.
-
비가 와서 그런가, 조금 사색적이고 약간은 가라앉는 하루인 것 같다. 공부도 잘 안돼서 장소를 여러 번 바꿔봤는데, 결국 오늘 목표치를 달성하지는 못했다. 아침 시간에 CLRS를 읽으며 이해에 집중하느라 오전을 다 보내버렸다. 오늘은 실패했지만, 미래의 나에게는 득이 되겠지.