AI 도움 없이 알고리즘 풀기 (미달성)
AI를 활용하기 전에 동료를 먼저 활용하기 (동료학습) (미달성)
dom, vdom, diff 이해하기 (달성)
이번 주차에는 트리 자료구조와 DFS, BFS, 위상정렬 알고리즘에 대해 중점적으로 학습하였다.
평소 코딩테스트를 준비하면서 DFS나 BFS, 특히 그래프 문제들은 항상 막히는 느낌이 있었는데 이번 주에 해당 유형 문제들을 계속 반복해서 풀다보니 조금은 익숙해진 느낌이 들었다. (물론 며칠 지나면 다시 낯설어질 것 같긴 하지만..ㅎ)
BFS는 넓이 우선 탐색으로 주로 최단 거리나 최소 횟수를 구하는 문제에서 많이 사용되고, DFS는 깊이 우선 탐색으로 모든 경우를 탐색하거나 백트래킹과 함께 사용하는 경우가 많다고 정리하면서 접근 방법이 조금씩 보이기 시작했다.
아직 완전히 체화된 수준은 아니지만, 이전보다는 문제를 봤을 때 "이건 BFS인가? DFS인가?" 정도는 판단할 수 있게 된 것 같다.
이번 주차도 알고리즘 위주의 주차이다 보니 팀 단위로 협업할 기회는 많지 않았다.
목표 중 하나가 AI를 사용하기 전에 동료를 먼저 활용하는 것이었는데, 이번 주에도 여전히 AI를 먼저 찾게 되는 경우가 많았다.
아마 팀원들 간 알고리즘 실력 차이도 조금 있고, 각자 다른 문제를 집중해서 풀고 있는 상황에서 질문을 꺼내는 것이 쉽지 않았던 것 같다. 괜히 흐름을 끊는 것 같기도 하고..
그래도 다음 주차는 알고리즘 마지막 주차이기도 하니까, 조금 더 적극적으로 동료에게 질문도 해보고 같이 고민해보는 시간을 가져보려고 한다.
이번 주차에는 React의 핵심 개념 중 하나인 DOM, Virtual DOM, 그리고 diff 알고리즘에 대해서도 공부했다.
기존에는 "Virtual DOM은 빠르다" 정도로만 막연하게 알고 있었는데, 실제로는 DOM 변경 자체를 빠르게 하는 것이 아니라 불필요한 DOM 업데이트를 줄이는 것이라는 점이 인상 깊었다.
Virtual DOM을 통해 이전 상태와 변경된 상태를 비교(diff)하고, 실제로 변경이 필요한 부분만 DOM에 반영하는 방식이라는 것을 이해하면서 React가 왜 효율적인지 조금 더 명확하게 이해할 수 있었다.
특히 단순히 전체를 다시 그리는 것이 아니라, 변경된 노드만 찾아서 업데이트한다는 점에서 성능 최적화 측면의 장점을 느낄 수 있었다.
아직 diff 알고리즘의 내부 동작을 완전히 이해한 것은 아니지만, 큰 흐름은 어느 정도 잡은 것 같다.