Python
-
[OOP] Binary Search Tree 자료구조 만들기Python 2023. 3. 20. 19:28
Binary Search Tree란? 이진 탐색 트리 Binary Tree : 오직 두 개의 자식을 가지는 tree구조 Binary Search Tree : 부모의 왼쪽 자식은 부모의 데이터값보다 작은 값을 가짐, 오른쪽 자식은 크거나 같은 값을 가짐 Binary Search Tree의 장점 1. 이진 탐색의 장점 -> 탐색 시간복잡도 O(logN), 삽입 삭제 불가능 2. 연결리스트의 장점 -> 데이터의 삽입 삭제 가능 Binary Search Tree의 시간복잡도 데이터 삽입, 삭제, 탐색 -> O(logN) Binary Search Tree의 기본 구성 요소 - Attribution ( 속성 ) Node 1. 데이터 값 2. left child, right child class Node: def _..
-
[OOP] Linked List 자료구조 만들기Python 2023. 3. 19. 21:26
Linked List란? - Linked List란? 배열 -> 연결된 공간에 데이터 나열 Linked List -> 각각의 공간에 존재하는 데이터를 연결해서 관리 - Linked List의 구성 요소 및 용어 노드(Node) : 데이터 저장 단위 -> 데이터 값, 포인터로 구성 -> 포인터(Pointer) : 노드 끼리의 연결 정보 저장 헤드(Head) : Linked List의 시작을 의미, 데이터 값으로 NULL을 가짐 Linked List 기본 구성 요소 구현 - Attribution ( 속성 ) Linked List의 구성 요소 : head, node, pointer Node의 구성 요소 : value(값), pointer -> Node 클래스 생성 -> Linked List 클래스 생성 -> ..
-
[프로그래밍 언어] Python Class 객체 지향(Object Oriented)Python 2023. 3. 19. 20:36
객체지향 VS 절차지향 - 절차 지향 ( Procedural Programming ) -> C언어 Top Down 방식 ( 순차적인 처리 ) 프로그램 전체가 유기적으로 연결 장점 : 실행속도가 빠름 단점 : 유지보수가 어려움, 디버깅이 어려움 - 객체 지향 ( Object Oriented Programming ) -> C++, Java, Python 실제 세계를 모델링하여 개발 속성(Attribution)과 행동(Method)로 이루어짐 3대 특성 1. 추상화 : 공통성과 본질을 모아 추출 2. 상속 : 상위 클래스의 속성과 method를 재사용할 수 있음 3. 다형성 : 하나의 객체가 다양한 속성과 method를 가질 수 있음 4. 캡슐화 : 연관된 속성과 기능을 하나의 캡슐로 만들어 외부로부터 데이터..
-
[프로그래밍 언어] Python 기초Python 2023. 3. 16. 17:41
컴파일러(Compiler) VS 인터프리터(Interpreter) - C언어 ( Compiler ) 고급 프로그래밍 언어(C) -> 어셈블리어 -> 기계어 소스 코드 -> 컴파일러(컴파일 타임) -> 어셈블러 -> 실행파일(런타임) -> 실행 실행과정에서 메모리 배정하고 싶은 경우 : 동적할당 사용 (C언어 : malloc, free / C++ : new, delete) - Python ( Interpreter ) 한 줄씩 실행, 메모리를 한 줄마다 할당. 변수와 메모리 데이터(변수) : 주소와 메모리(값)이 존재 고급 프로그래밍 언어에서 변수의 이름은 데이터의 주소를 쉽게 보기 위함 -> 결과적으로 변수의 주소값이 중요 파이썬에서의 변수할당 ( Mutable VS Immutable ) - Mutable..
-
[Python] Heapq 모듈로 힙(Heap) 구현하기Python 2022. 10. 20. 18:22
Heapq 모듈 사용법 Heapq 모듈을 사용하여 Heap 구조를 만족하는 배열을 생성할 수 있다. 기본적으로 Min Heap으로 구현됨. 1. Import import heapq 2. Heap 노드와 값을 저장할 배열 초기화 Min_Heap = list() 3. 노드 추가 ( Heappush() ) # 삽입은 heappush 사용 # 기본 구조 : heappush(배열, 값) for i in range(3,0,-1) : heapq.heappush(Min_Heap, i) print(Min_Heap) # 결과 : [3] -> [2, 3] -> [1, 3, 2] # root와 새로 추가된 노드의 swap 고려 4. 노드 삭제 ( Heappop() ) # 삭제는 heappop 사용 # 기본 구조 : heapp..