얼렁뚱땅 스며드는 Data Science

자료구조 4

[프로그래머스 알고리즘] 20강: 이진 탐색 트리 (Binary Search Tree)

이진 탐색 트리 (Binary Search Tree) 모든 노드에 대해서, 왼쪽 서브트리에 있는 데이터는 모두 현재 노드의 값보다 작고, 오른쪽 서브트리에 있는 데이터는 모두 현재 노드의 값도가 큰 성질을 만족하는 이진트리 (중복데이터는 없는 것으로 가정) 정렬된 배열을 이용한 이진 탐색과의 비교 장점 : 데이터 원소의 추가, 삭제가 용이 단점 : 공간 소요가 큼 항상 O(logn)의 탐색 복잡도를 가지는가? --> NO 각 노드는 (key, value)의 쌍으로 키를 이용하여 검색 가능. 보다 복잡한 데이터 레코드로 확장 가능 연산의 정의 insert(key, data) - 트리에 주어진 데이터 원소를 추가 remove(key) - 특정 원소를 트리에서 삭제 lookup(key) - 특정 원소를 검색 ..

Algorithm 2021.07.21

[프로그래머스 알고리즘] 19강: 이진 트리의 넓이 우선 순회 (BFS; Breadth First Traversal)

넓이 우선 순회의 원칙 수준이 낮은 노드를 우선으로 방문 같은 수준의 노드들 사이에서는, 부모노드의 방문 순서에따라 방문, 왼쪽 자식 노드 우선 따라서 재귀적 방법이 적합하지 않음! 한 노드를 방문했을때, 나중에 방문할 노드들을 순서대로 기록해 두어야 함 --> queue를 이용 구현 방법 (초기화) traversal

Algorithm 2021.07.21

[프로그래머스 알고리즘] 3강: 배열 - 정렬과 탐색 (Sorting & Searching)

3강 : 배열 - 정렬과 탐색 1. 정렬 (Sorting) sorted() : 파이썬 내장함수, 정렬된 새로운 리스트 반환 sort() : 리스트 메서드, 해당 리스트 정렬 만약, 리스트가 string으로 이뤄져 있다면 알파벳 순서 따라서 정렬된다. 정렬 기준을 사용자가 직접 정하고 싶을때는 key 파라미터를 이용하여 정렬을 해준다. EX1) x의 길이를 기준으로 리스트를 정렬하여라. sorted(L, key = lambda x: len(x)) EX2) L이 name과 score로 이뤄진 딕셔너리가 든 리스트라 할 때, score를 기준으로 정렬하여라. L.sort(key = lambda x: x['score'], reverse = True) 2. 탐색 (Searching) 선형탐색 (Linear Sea..

Algorithm 2021.07.12

[프로그래머스 알고리즘] 1강, 2강 : Intro & Linear Array

Q. 우리는 왜 알고리즘과 자료구조를 배울까? 해결하고자 하는 문제에 따라 최적의 해법이 다 다르다. 자료구조 / 알고리즘을 통해 빠르고 효율적인 답을 얻을 수 있다. 알고리즘 [사전적 정의] 어떤 문제를 해결하기 위한 절차, 방법, 명령어들의 집합 [프로그래밍] 주어진 문제의 해결을 위한 자료구조와 연산 방법에 대한 선택 선형 배열 (Linear Arrays) Python에서의 리스트는 다른 프로그래밍 언어들과는 달리 다양한 타입들의 원소를 가질 수 있다. 상수 시간이 걸리는 연산: 리스트의 길이와 상관없이 시간이 걸린다. (리스트 길이와 상관없이 수행됨) .pop( ) : 리스트 마지막 원소를 꺼내는 연산 .append( ) : 리스트 마지막에 괄호 안의 원소를 추가하는 연산 선형 시간이 걸리는 연산..

Algorithm 2021.07.12