전체 글 251

파이썬 알고리즘 인터뷰 - 트리

트리 계층형 트리 구조를 시뮬레이션 하는 추상 자료형(ADT)으로 루트 값과 부모-자식 관계의 서브트리로 구성되며, 서로 연결된 노드 집합 재귀로 정의된 자기 참조 자료구조(여러 개의 트리가 쌓아 올려져 큰 트리가 됨) 트리의 각 명칭 루트 : 자식 노드를 가지며, 간선으로 연결되어 있는 것 차수 : 자식 노드의 개수 높이 : 현재 위치에서부터 리프까지의 거리 깊이 : 루트에서부터 현재 노드까지의 거리 그래프 vs 트리 트리는 순환 구조를 갖지 않지만 그래프는 순환 구조를 가지고 있다. (a) 같은 경우는 순환 구조를 가지고 있지 않기에 트리지만 (b) 같은 경우는 A-B-C-F 순환 구조를 가지고 있기에 그래프이다. 이진 트리 모든 차수가 2 이하 일때를 말한다. 왼쪽, 오른쪽 최대 2개의 자식을 갖는..

파이썬 알고리즘 인터뷰 - 그래프

그래프 수학에서, 좀 더 구체적으로 그래프 이론에서 그래프란 객채의 일부 쌍들이 연관되어 있는 객체 집합 구조를 말한다 정점, 간선으로 이루어져 있고 모든 정점의 쌍 반드시 간선으로 연결 되는 것은 아니다 하나의 간선은 두 개의 정점을 연결한다 오일러 경로 그래프에 존재하는 모든 정점이 한 번씩만 방문하는 경로(한붓그리기,시작과 끝이 같아야한다) 모든 정점이 짝수 개의 차수를 갖지 않으면 오일러 경로가 아니다 오일러 경로를 가진 그래프를 오일러 그래프라고 한다 해밀턴 경로 각 정점을 한번 씩 방문하는 무향 또는 유향 그래프 경로를 말한다(시작과 끝이 같아야한다) 해밀턴 경로를 가진 그래프를 해밀턴 그래프라고 한다 오일러 경로와의 차이는 오일러는 간선기준, 해밀턴 경로는 정점을 기준으로 한다는 것이다 그래..

파이썬 알고리즘 인터뷰 - 해시 테이블

해시테이블 해시 테이블 또는 해시 맵은 키를 값에 매핑할 수 있는 구조인, 연관 추상 자료형(ADT)를 구현하는 자료구조이다. 대부분 연산이 분할 상환 분석에 따른 시간 복잡도가 O(1)이라는 점이다. 데이터 양에 관계 없이 빠른 성능을 가진다. 해시 해시 함수란 임의 크기 데이터를 고정 크기 값으로 매핑하는 데 사용할 수 있는 함수를 말한다. 해싱 테이블을 인덱싱하기 위해 이처럼 해시 함수를 사용하는 것을 해싱이라 하며, 해싱은 정보를 가능한 빠르게 저장하고 검색하기 위해 사용하는 중요한 기법이다. 체크섬, 손실 압축, 무작위화 함수, 암호 등에 쓰이고 서로 혼용되기도 한다. 성능 좋은 해시 함수들은 다음의 특징을 가진다. 해시 함수 값 충돌의 최소화 쉽고 빠른 연산 해시 테이블 전체에 해시 값이 고르..