어쩌다 보니 홀수차에만 적게 되는 개발일지가 되어버렸다.
저번주(WEEK04)는 알고리즘 주차를 마무리했고, 카톡 사태로 인해 티스토리도 터져버렸고 나의 멘탈도 함께 터져버렸다. 보통의 기록을 티스토리에서 시작하여 마무리를 짓는 편인데 그러지 못한 점에서 멘붕이 왔었던 것 같다. 만일의 사태에 대한 대비가 없었던 것 같다. 잠시 노션으로 갈아탔다가, 노션 앱의 유용성과 가시성에 반하였지만 다시 티스토리로 돌아왔다.
요즘 디스플레이의 구글창이 소멸할 정도의 정보의 바다 속에서 살고 있다. 구글 창이 그렇게 CPU 점유율이 높아서 CW 오빠는 최대 10개를 킨다고 하는데 난 지금 글을 쓰는 시점에도 3개의 구글 창에 십 몇 개의 구글 창들이 존재한다. 구글링을 하는 과정에서 옳은 정보를 찾고, 그 정보를 적용하고 정리하는 것도 많은 시간과 능력을 요구하는 것 같다.
나의 일주일
C언어 극혐자였던 나는 내 인생에 C언어는 다시 안 볼 줄 알았다. C언어를 안 할려고 자바로, 파이썬으로 옮겨다녔는데 결국엔 C로 돌아왔다. 이번주차는 C언어의 이해 목적이 아닌 C언어를 이용해 RB-TREE를 "구현"해야하는 것이었다. 즉, C언어의 이해는 필수였다. 포인터만 나오면 머리가 어지러웠던 나는 결국에 피할 수 없는 상대를 맞이해버린 것이다.
포인터의 의미를 조금씩 찾아나가자 포인터가 이런 느낌이구나...를 깨달았다. 사실 완전히 깨달았다고는 못하겠다. 그래도 어찌저찌 레드블랙 트리 수도코드를 쳐보면서 이 구조체를 사용하자고 포인터 변수를 사용하고 등등 .. 신기한 경험이었던 것 같다.
FROM TEATIME
RB트리를 구현하는 것보다, RB트리라는 자료구조가 왜 나왔을까, 이 자료구조가 어디에 쓰일까를 고민해보아라.
RB트리 뿐 아니라 다른 영역에서도 이런 사고방식이 도움이 된다.
구현을 잘하면 100%로 좋다. 하지만 구현을 잘하는 것과 별개로 이 알고리즘이 나오게 된 배경을 한 번 생각해봐라. 기존 애들로는 부족하니깐 이런 애들이 나왔겠지. 어디다 쓸려고 얘네를 만들었을까. 를 이해해야한다.
=> 사실 공부하면서 RB TREE가 정확히 어디에 쓰이는지에 대해 찾아보았는데 내가 원하는 명확하게 쓰이는 곳(?)에 대해 찾기 힘들었다. 그래서 내가 이런 식으로 궁금했던 것을 찾아보고 알아보는게 맞는가 싶었는데 틀린 방향은 아니였다는 것을 깨달았다. RB tree의 회전, 삽입, 삭제에 관한 디테일한 내용들은 많은 분들이 정리해주셨는데 왜, 어디서에 관한 얘기는 없는 것 같아서 정리해보았다. 구현한 rbtree-lab 레포 리드미에 정리해놓았다. ! 리눅스 커널의 rbtree는 YJ 언니를 통해 알게 되었는데 완전 신기하고 띠용했던 경험 !
https://github.com/choidabom/rbtree-lab
이번주 WEEK06의 과제는 malloc-lab이다. 동적 메모리 할당하는데 쓰이는 malloc을 직접 구현해봐야하는 실습이다. 어떻게든 해결하려는 목표를 가지고 해내가는 우리를 보면서 다음주 목요일의 우리는 다 해내었을 것임을 알 수 있었다. 다음주의 우리는 malloc을 이해하고 이를 구현했을 것이다. 이번주도 고생했고, 다음주는 더욱 성장한 내가 되어있을 것이다.
아자아자 .. 💡
Students implement their own versions of malloc, free, and realloc. This lab gives students a clear understanding of data layout and organization, and requires them to evaluate different trade-offs between space and time efficiency. One of our favorite labs. When students finish this one, they really understand pointers!
'SW사관학교 정글 > 개발일지' 카테고리의 다른 글
In the jungle on the last day of 2022 (0) | 2022.12.31 |
---|---|
핀토스는... 내 맘을 ... (2) | 2022.12.11 |
[WEEK03] 개발일지 (부제: set💖과 소소한 행복 찾기) (6) | 2022.10.13 |
[WEEK01] 개발일지 (부제: 알고리즘 start) (4) | 2022.09.29 |
[WEEK01] 특별한 과제 (부제: 찬찬히 나를 돌아보는 시간) (9) | 2022.09.24 |