현재 항해99에서 14일차를 진행하고 있습니다..ㅎ
첫 주차는 파이썬과 플라스크를 이용한 미니 웹 프로젝트를 진행하였고 2주차와 3주차인 2주 동안 알고리즘 테스트에 대비한 과정을 진행 중인데, 항해99를 하면서 알고리즘 풀이에 있어서 2주씩이나 분배한 이유가 무엇인가? 라는 의문이 있었습니다. 2주차인 현재 과정을 진행하면서 의문이 완전이 해소되었습니다.
알고리즘 첫 주차인 3월5일부터 3월 11일까지는 이해도가 전혀 다른 팀원들과 코드 리뷰에 대한 과정을 진행하면서, 자신이 자기 코드를 얼마나 잘 설명할 수 있고, 남에게 잘 설득할 수 있는지에 대해 고민한 시간이었던 것 같습니다!
내가 짠 코드를 남에게 설명하기 위해 왜 이렇게 함수를 만들었는지, 동적 계획법을 어떻게 활용했는지에 대한 설명을 이해시키는 것은 참 어려웠습니다. 이 한 주 동안은 이 과정을 반복하면서 내 코드를 남에게 더 잘 설명하는 방법을 배웠던 것 같습니다.
현재 진행 중인 알고리즘 2주차에서는 많은 문제를 빨리 풀어가면서 동적 계획법, DFS, BFS, 이분 탐색, 그리디 등 많고 다양한 유형을 풀어가면서 비슷한 유형들에 익숙해지는 과정이었던 것 같습니다. 비슷한 실력의 사람들과 팀으로 짝지어 지면서 빠른 풀이와 빠른 이해를 진행하였고 속도를 붙여 다른 사람들은 어떻게 풀이를 진행하였는지 알 수 있었습니다. 어떻게 보면 생각의 폭을 늘릴 수 있었던 시간이었습니다.
N-Queen 문제를 풀고 있는데, 백트래킹 알고리즘에 대한 이해가 더 필요하다고 느껴졌습니다. 백트래킹에서 가장 대표적인 예제 문제로, 머리 속에서 이해한대로 상태 공간 트리를 짜보았지만 테이블 체크가 원하는대로 되지 않았고 풀이 과정이 쉽지 않았습니다. C언어로는 메모리를 다루어 이전 상태로 돌리기 쉬웠지만 파이썬으로 알고리즘 테스트를 진행 하다보니 상태 저장하는 과정이 쉽지 않았던 부분도 있었습니다. copy 라이브러리의 deepcopy함수를 사용해도 잘 되지 않았는데 이 부분은 계속 고민을 해봐야 할 것 같습니다.
나의 코드를 남에게 이해시키는 과정도 숙제지만 남의 코드를 보다 쉽게 이해하는 것도 숙제로 남게 되었습니다. 개발자는 코드로 소통한다고 하였는데 남의 코드를 보면서 이해하는 것도 중요하다고 많이 느끼게 된 3주차입니다!