Dev 썸네일형 리스트형 [Data Structure] Heap(힙) 자료구조 | 우선순위 큐(Priority Queue) | Heapify Heap Data Structure 세 번째 스터디 : Heap Heap이란? 완전 이진 트리(complete Binary Tree)의 일종, 우선순위 큐(데이터가 우선순위를 가지고 있으며, 우선순위가 높을수록 먼저 빠져나가는 큐)를 위해서 만들어진 자료 구조 우선순위 큐는 Array, Linked List, Heap으로 구현이 가능한데, 이중 힙(Heap)으로 구현하는 것이 가장 효율적 자료구조삭제되는 요소 스택(Stack) 가장 최근에 들어온 데이터(LIFO) 큐(Queue) 가장 먼저 들어온 데이터(FIFO) 우선순위큐(Priority Queue) 가장 우선순위가 높은 데이터 우선순위 큐의 이용 사례 시뮬레이션 시스템 네트워크 트래픽 제어 운영 체제에서 작업 스케쥴링 수치 해석적인 계산 Heap의 .. 더보기 [Data Structure] Stack & Queue | 스택과 큐 | 스택 파이썬으로 구현하기 | 큐 파이썬으로 구현하기 | 순환 큐 | 우선순위 큐 | 연산자 표기법 Stack vs Queue Data Structure - 3번째 스터디 : Stack과 Queue Stack이란? 후입 선출 FILO / LIFO의 자료구조 FILO: First In Last Out - 먼저 들어간 것이 나중에 나옴 LIFO: Last In First Out - 나중에 들어간 것이 먼저 나옴 시간/공간복잡도: O(n) / O(n) push(삽입): 스택에 삽입하는 연산 pop(삭제): 가장 위(top)에 있는 자료를 꺼내며 삭제하는 연산 peak(읽기): 가장 위(top)에 있는 데이터를 읽기 (삭제X) 활용 예시 안드로이드의 액티비티 관리 웹 브라우저의 방문기록 (뒤로가기) 역순 문자열 만들기 실행 취소(undo) 연산자 후위 표기법 Queue란? 선입 선출 FIFO / LILO의 자.. 더보기 [Data Structure] Tree(트리) 자료구조 | 트리의 특징 | 트리의 구성요소 | 트리의 종류 | 트리의 활용 | 트리의 장점 Tree Data Structure - 4번째 스터디 : Tree Tree의 기본 개념과 특징 노드들이 나무 가지처럼 연결된 비선형 계층적 자료구조 하나의 루트 노드와 0개 이상의 하위 트리로 구성 데이터를 순차적으로 저장하지 않기 때문에 비선형 자료구조 트리 내에 또 다른 트리가 있는 재귀적 자료구조 Loop를 갖지 않고 연결된 무방향 그래프 구조 계층형 자료구조 : 모든 노드는 단 하나의 부모 노드만을 가짐 (루트노드 제외) 노드가 n개인 트리는 항상 n-1개의 간선(edge)를 보유 Tree의 구성요소 Tree의 구성 요소 Node(노드): 트리를 구성하는 각각의 요소 Edge(간선): 트리를 구성하기 위해 노드와 노드를 연결하는 선 Root Node(루트노드): 트리 구조에서 최상위에 있는 노드 .. 더보기 [Git&GitHub] Git 마크다운 꿀팁 모음 | 마크다운 에디터 StackEdit | MarkDown 문법 | REAME 템플릿 개발자라면 마크다운 언어를 자주 사용하게 됩니다 주피터 노트북, 구글 코랩에서도 코드를 문서화하는 것처럼 사용할 수 있고 가장 중요한 깃허브에서 프로젝트 소개 등의 페이지에 자주 사용됩니다 그래서 제가 마크다운 페이지를 작성할 때 주로 찾아보거나 사용하는 것들을 정리해보았습니다 1. 웹 에디터를 사용해라 (StackEdit) 짧고 간단한 내용만 작성한다면 따로 에디터를 사용할 필요는 없겠지만 프로젝트 소개 및 설치 안내 등의 긴 내용을 작성해야 한다면, 별도의 에디터를 사용하는 것이 훨씬 편리합니다 깃헙에서도 프리뷰로 제공하기는 하지만 마크다운이 적용된 모습을 확인하기 위해서는 매번 버튼을 클릭해봐야하기 때문에 좀 불편할 수 있습니다 그래서 저는 대부분의 내용은 웹 에디터를 사용해서 작성하고 어느정도 작.. 더보기 [Data Structure] Dynamic Array (Array List) vs Linked List | 동적 배열과 연결리스트 Dynamic Array (Array List) vs Linked List Data Structure - 두 번째 스터디 : Dynamic Array (Array List)와 Linked List Dynamic Array (Array List) 기본 개념 내부적으로 배열을 사용하지만 List 인터페이스를 상속받아 크기가 가변적으로 변할 수 있는 순차리스트 Java : ArrayList / C++ : Vector 배열의 크기를 변경하는(가변) resize() 연산 가능 동기화를 지원하지 않음 → Vector보다 속도가 빠름 [특징 1] 검색 : 배열처럼 인덱스를 가지고 있어서 데이터 검색에 적합하고 속도가 빠름 → O(1) [특징 2] 삽입/삭제 : 해당 데이터를 제외한 모든 데이터를 임시 배열을 생성해 .. 더보기 [Data Structure] Array vs LinkedList | 배열과 연결리스트 Array vs Linked List Data Structure 첫 번째 스터디 : Array와 Linked List Array(배열) 기본 개념 인덱스를 사용하여 접근이 가능한 메모리 상에 데이터를 연속하게 배치한 자료구조 논리적 저장순서와 물리적 저장순서 일치 → 검색 시 용이 데이터 자료형들이 모두 동일 연속적인 메모리 공간 → 메모리 공간 활용에 제약 (초기에 할당 후에는 크기 불변) [종류] 다양한 차원의 배열을 가질 수 있음 (1차원, 2차원, 3차원 등) [특징 1] 검색 : 인덱스를 사용하여 빠르게 접근 가능! → O(1) [특징 2] 삽입/삭제 : 끝 부분을 제외한 임의의 원소에 접근하여 shift 한뒤 작업해야 하므로 → O(n) Linked List(링크드리스트) 기본 개념 노드(데이.. 더보기 [OpenCV] 동영상 재생하기 | 웹캠 재생하기 | 웹캠으로 들어온 영상 저장하기 (VideoCapture, VideoWriter) 동영상은 일련의 정지 영상을 압축하여 파일로 저장한 형태를 의미 이 때 동영상에 저장되어있는 일련의 정지 영상을 프레임(frame)이라고 함 따라서 동영상을 처리하는 방법은 동영상에서 프레임을 추출한 후, 각각의 프레임에 영상 처리 기법을 적용하는 것 → 웹캠도 동일하게 카메라로부터 일정 시간 간격으로 정지 영상 프레임을 받아와서 처리 OpenCV에서는 VideoCapture라는 클래스를 이용하여 카메라 또는 동영상 파일로부터 정지 영상 프레임을 받아올 수 있음 1. 동영상 파일 읽어와서 재생하기 import cv2 videoFile = '../datasets/video2_meat.mp4' #read video file cap = cv2.VideoCapture(videoFile) #load as a Vi.. 더보기 [Git&GitHub] 원격저장소 생성 | 원격저장소에 커밋 올리기 | 원격저장소에서 로컬저장소에 커밋 내려받기 1. 원격저장소 생성 GitHub에 로그인하고, 상단 네비게이션 바에서 오른쪽에 있는 + 아이콘을 클릭 한 뒤 New repository 메뉴를 선택한다 저장소 이름과 설명을 지정하여 저장소를 생성한다 이후에 뜬 화면에서 원격 저장소의 주소를 복사해둔다 2. 원격저장소에 커밋 올리기 remote add origin 명령어를 이용하여 로컬저장소에게 원격저장소의 주소를 알려준다 push 명령어를 사용하여 로컬저장소의 커밋을 원격저장소로 올린다 3. 원격저장소의 커밋을 로컬 저장소에 내려받기 원격 저장소의 코드와 버전 전체를 내 컴퓨터로 내려받는 것을 clone이라고 한다 클론을 하면 최신 버전뿐만 아니라 이전 버전들과 원격저장소 주소 등이 내 컴퓨터의 로컬 저장소에 저장된다 앞서 생성한 원격저장소에 들어가서.. 더보기 이전 1 ··· 8 9 10 11 12 13 14 ··· 17 다음