비전공자 개발자로서 CS 지식이 부족하다고 항상 생각해왔고, 아직 실무에서 깊은 CS 지식이 필요하지는 않지만 추후에 최적화나 성능 관련 이슈를 해결하려면 기본이 되어야 한다고 생각한다. 이런 생각을 팀장님께 말씀드렸더니 실무에 적용할 수 있는 자료구조와 알고리즘 관련
5장 빅 오를 사용하거나 사용하 않는 코드 최적화 선택정렬 0번째 인덱스에 있는 값과 그 다음 값들을 비교하여 가장 작은 값과 0번째 인덱스의 값과 자리를 바꾼다. 1번 과정을 1번째, 2번째 ... n-1번째 인덱스(길이가 n인 배열)까지 반복한다. 원
8장 해시 테이블로 매우 빠른 룩업 해시 테이블 해시 테이블은 키(key), 값(value)이 쌍으로 이루어진 값들의 리스트로 조회할때 딱 한단계만 걸리므로 효율성이 O(1)이다. 해시 함수로 해싱 문자를 가져와 숫자로 변환하는 과정을 해싱(hashing)이
11장 재귀적으로 작성하는 법 재귀 카테고리 : 반복실행 추가 인자 넘기기 재귀 카테고리 : 계산 factorial(6) = 6 * factorial(5) 인것 처럼 호출되는 재귀 함수를 하위 문제라고 부르며 하위 문제를 호출하면 계산하는 방식을 하향식
14장 노드 기반 자료 구조 연결 리스트 연결 리스트는 항목의 리스트를 표현하는 자료구조로, 메모리 곳곳에 흩어진 데이터(노드)들이 다음 노드의 메모리 주소를 포함하고 있는 구조이다. Node 클래스에 노드의 값과 다음 노드로의 링크인 next_node를 저장
17장 트라이(trie)해 보는 것도 나쁘지 않다. 트라이 트라이(trie)는 자동 완성 같은 텍스트 기반 기능에 이상적인 자료구조로 추출(retrieval)이라는 단어에서 유래되었으나 트리(tree)와의 혼동을 막기 위해 트라이로 발음한다. 트라이도 트리처
19장 공간 제약 다루기 공간 복잡도의 빅 오 책의 전반에서 다양한 알고리즘의 효율성을 분석하면서 오로지 알고리즘이 얼마나 빠른가, 즉 시간 복잡도에만 초점을 맞췄다면 또 다른 척도로 얼마나 많은 메모리를 소모하는가인 공간 복잡도가 유용할 수 있다. 공간복잡도