이번주 알고리즘의 키워드: 이분 탐색, 분할 정복, 퀵정렬, 머지정렬, 스택, 큐, 우선순위 큐, 연결 리스트, 해시 테이블
이번주도 저번이랑 비슷했다. 가장 어려웠던 건 '중' 난이도 문제들이 저번보다 까다로워져서 반 정도밖에 못 풀었다는 점이다. 부족한 실력을 채우려고 리트코드에서 '하'와 '중' 사이 난이도의 문제들을 골라 많이 풀었다.
이번에 생각이 달라진 부분이 있다면, 알고리즘이 단순히 생각의 결을 맞추는 용도가 아니라는 점이다. 내가 지금 쓰는 언어 자체가 내부에서 어떻게 돌아가는지, 그 동작 원리를 이해하기 위해서도 알고리즘은 필수적이라는 걸 깨달았다. 특히 파이썬이 내부에서 어떻게 돌아가는지 탐구하면서, 어떤 알고리즘이 이용되었고 어떤 설계 의도로 이 언어를 만들었는지 그 특성을 이해한 게 이번 주 가장 큰 수확이었다. #파이썬 내부 관련 글은 나중에..
팀 프로젝트는 저번 기획 중심에서 벗어나 이번엔 직접 Redis를 구현하며 공부를 병행했다. 연결 리스트와 해시 테이블 같은 자료구조가 실제 프로젝트에서 어떻게 쓰이는지 확인할 수 있었다. 다만 서버 지식이 아예 없다 보니 포트나 OSI 7계층 같은 기초부터 찾아보느라 시간이 너무 많이 들어갔다. 레디스의 역사나 필요성에만 매몰되다 보니 정작 다른 대안은 무엇인지, 그 단점은 무엇인지까지 넓게 살피지는 못해 아쉽다.
구현을 AI에게 맡기다 보니 시간이 부족해 일단 구현부터 하고 나중에 학습하는 식의 주객전도가 된 느낌도 든다. 그래도 AI에게 어떤 질문을 던지고 무엇을 맡겨야 할지 감이 잡히기 시작해서 다음 프로젝트 때는 제대로 적용해 보고 싶다. 또 역할을 나누다 보니 내가 담당하지 않은 분야, 특히 CLI 구현이나 입력값이 해시 테이블까지 전달되는 구체적인 과정을 직접 추적하지 못한 게 마음에 남는다. 변수명으로 흐름만 설계했을 뿐 실제 코드를 다 보지 못했기 때문에, 팀원들과의 회고 시간에 서로 지식을 나누며 이 부분을 다시 리뷰하고 싶다.