오늘 한 일
- 골드바흐, 하노이, N-Queen 문제 화이트보드에 손으로 쓰면서 세 번 풀기.
- CSAPP 1.6까지 읽음.
- 알고리즘(두꺼운 책) 1장, 알고리즘(얇은 책) 2장까지 읽음.
배운 점
-
재귀, 백트래킹 개념은 이해한 듯.
- 재귀 호출은 반드시 베이스 케이스(종료 조건)를 가져야 함.
- 백트래킹은 재귀 호출 중 가지를 잘라내는 과정. 이때 undo 작업이 필요함.
-
소수 판별 알고리즘을 다시 구현해볼 필요성을 느낌.
-
컴파일 이후 실행 과정: 쉘에서 프로그램을 실행할 때 하드웨어가 어떻게 동작하는지 흐름을 이해함. 다만 OS의 역할은 아직 부족하게 이해하고 있다는 점도 깨달음.
-
캐시에 대한 오개념 수정: 캐시는 하위 계층의 데이터를 상위 계층(빠른 저장장치)에서 보관해 두는 것임.
-
저장장치 계층 구조 학습: ‘자주 쓰는 데이터’를 누가 결정하는지에 대한 궁금증이 생김.
- CPU 캐시: 하드웨어(캐시 컨트롤러)가 판단
- 메모리/디스크: OS가 페이지 교체 알고리즘으로 판단
- 애플리케이션: 자체 정책(예: Redis, DB)으로 판단
→ 시간·공간적 지역성과 교체 알고리즘을 바탕으로 동적으로 결정됨.
어려웠던 점 & 해결
-
하노이와 N-Queen 문제가 머릿속에 잘 들어오지 않아 다른 공부법을 시도.
→ 수석코치님 말씀을 떠올려 강의한다고 생각하고 화이트보드에 의사코드 작성 후 손코딩 진행. -
PyCharm 자동 생성 기능 없이 손으로 직접 구현하니 훨씬 더 공부가 됨.
-
의사코드를 먼저 쓰며 아이디어와 구현 개요를 정리한 뒤, 손으로 코드를 작성.
-
잠도 안 오고 재미있어서 앞으로도 화이트보드를 적극 활용할 예정.