패스트캠퍼스 챌린지 06일차
[오늘 진도]
Part 1. 자료구조 이론
Ch 09. 자료구조 (트리)
- 03. 이진 탐색 트리 구현과 성능 평가 1
- 04. 이진 탐색 트리 구현과 성능 평가 2
오늘은 어제 배운 트리를 코드로 작성했다. 역시 어제 재밌다고 느낀 건 오늘을 위해 봐준 것 같다. 부스트코스 때, 노드를 삭제하는 걸 배웠을 때 이렇게까지 어렵진 않았는데 말이야…. 아무래도 검색이나 추가하는 것부터 다르다 보니 삭제도 다른 것 같다. 학원에서 프로젝트를 진행할 때도 느낀 거지만 같은 생각을 해도 그걸 코드로 작성하는 게 천차만별이다. 이게 프로그래밍의 매력인 것 같다. 아마 자료구조가 끝날 때까지 비교하게 되지 않을까 싶다. 그래도 알고리즘은 배우지 않았으니까 비교하지 않고 넘어갈 수 있을 것 같다.
노드를 삭제하는 경우는 어제 강의에 나온 것처럼 여러 가지 경우가 있다. 강의에서는 종단 노드인 경우, 자식 노드가 하나 있을 때, 자식 노드가 두 개 있을 때 총 세 가지로 봤다. 종단 노드인 경우는 다음 노드를 가리키는 브랜치만 없애주면 되기 때문에 간단하다. 하지만 이때도 경우의 수를 생각해야 한다. 만약 삭제하려는 이 종단 노드가 곧 루트 노드라면? 그리고 이 트리에 노드가 두 개뿐이라 이 노드를 삭제하면 루트 노드만 남을 때와 그렇지 않았을 때 총 세 가지 경우의 수이다. 강의 중 강사님께서는 모든 예외케이스(이를 코너 케이스라고 하셨는데 왜 코너 케이스라고 하는거지? 구석에 있어서 잘 안 보이니까 코너 케이스인가?)를 먼저 생각해놔야 시간복잡도를 낮출 수 있다고 하셨다. 그래서 자식 노드가 하나 있을 때, 두 개 있을 때도 그런 경우의 수를 먼저 생각하고 코드를 작성했다. 이 경우에 대한 설명은 다른 사람들이 블로그에 많이 다루니까…. 나는 수강 후기를 쓰는거니까…. 코드와 관련된 건 적지 않겠다. 저작권 무서우니까.
오늘은 다시금 경우의 수를 생각해 놔야 한다는 걸 배웠다. 프로젝트 할 때 조원들과 데면데면해서 이런 걸 꼼꼼하게 하지 않았더니 기능도 빈팀이 많이 생겼다. 지금은 단순하게 프로젝트의 기능이지만 이게 보안이라던가 회사에서 요구한 기능이라던가 그렇게 되면 일이 더 커질 것이다. 촘촘히 경우의 수들을 생각해봐야겠다.
수강료 100% 환급 챌린지 | 패스트캠퍼스
딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.