코드 한 줄이 무서웠던 오늘, 그래도 끝까지 앉아 있었다
1. 이번 주에 배운 기술이나 개념 중 가장 기억에 남는 3가지는 무엇인가요?
첫째, 빅오 표기법(Big-O Notation)이다. O(1), O(n), O(n²)이 무엇을 뜻하는지 처음 들었을 때는 외계어 같았는데, 강사님이 "마트에서 계산대가 1개면 줄이 길수록 오래 걸린다"고 비유해주자 순식간에 이해됐다. 알고리즘 성능을 수식으로 표현할 수 있다는 게 신기하고 강렬하게 남았다.
둘째, 스택(Stack)과 큐(Queue)의 차이. LIFO와 FIFO라는 개념이 처음에는 비슷해 보였는데, 브라우저 뒤로가기 버튼이 스택 구조라는 설명에 "아, 내가 매일 쓰던 거잖아!" 하고 눈이 번쩍 떴다.
셋째, 재귀(Recursion)의 기본 구조. 함수가 자기 자신을 호출한다는 개념이 머리 속에서 계속 맴돌았다. 실제로 코드를 돌려봤을 때 무한루프를 만들어서 터미널이 멈추는 경험을 했는데, 그게 오히려 기저 조건(base case)의 중요성을 몸으로 각인시켜줬다.
2. 이번 주 과정 중 막혔던 문제나 오류가 있었나요? 어떻게 해결했나요? (없다면 가장 인상 깊었던 실습 내용)
재귀 함수 실습 중에 기저 조건을 빠뜨려서 콘솔이 Maximum call stack size exceeded 오류를 뱉었다.
처음엔 에러 메시지 자체가 낯설어서 당황했는데, 옆자리 수강생이 "기저 조건 빠진 거 아니에요?" 한마디에 바로 찾아냈다.
해결 후엔 왜 콜 스택이 넘치는지 직접 그림으로 그려봤다.
함수 호출이 쌓이는 모습을 시각화하니 스택 자료구조 개념과도 자연스럽게 연결됐다.
앞으로 재귀 문제를 풀 때는 먼저 기저 조건부터 써두는 습관을 들여야겠다고 다짐했다.
3. 이번 주 수업 진도 속도, 강사님의 강의 스타일, 혹은 반 분위기는 어땠나요?
진도 속도는 솔직히 빠른 편이었다.
오전엔 이론 설명, 오후엔 바로 실습으로 넘어가는 구성인데 이론이 충분히 소화되기 전에 코딩을 시작하니 처음엔 손이 잘 안 움직였다.
강사님은 추상적인 개념을 일상 비유로 풀어주는 스타일이라 듣기에는 편했다.
질문을 던지면 바로 답 대신 "어디까지 생각해봤어요?" 하고 되묻는 방식이라 처음엔 어색했지만,
스스로 생각하게 만드는 의도인 것 같아서 나쁘지 않았다.
반 분위기는 전체적으로 긴장감과 설렘이 공존하는 첫날 특유의 분위기.
쉬는 시간에 옆자리 수강생들과 에러 해결 얘기를 나누면서 빠르게 친해졌다. 같이 고생하는 동지 느낌이 생겼다.
4. 다음 주에는 어떤 부분을 보완하고 싶나요?
우선 오늘 배운 Big-O 개념을 실제 코드에 적용하는 연습을 더 해야겠다.
이론은 이해했지만 "이 코드가 O(n)인지 O(n²)인지" 바로 떠오르지 않는다.
문제를 몇 개 풀면서 눈에 익혀야 할 것 같다.
두 번째로, 재귀 문제를 최소 3~5개는 혼자 풀어보고 싶다.
오늘은 거의 보고 따라치기 수준이었으니까.
마지막으로, 수업 전에 다음 주 주제(정렬 알고리즘)를 살짝 훑어두면 진도 속도에 덜 치일 것 같다.
예습이 생존 전략이 될 수도 있겠다는 생각이 든다.
댓글
댓글이 없습니다.
