일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 딥러닝
- Node
- 시스템프로그래밍
- StringTokenizer
- 블록체인강의
- national instruments
- 디스크블록할당
- Entity
- 머신러닝
- CSS 기초
- 블록체인 강의
- attribute
- html기초
- 컴파일시스템
- stringreader
- 오블완
- 2차원배열정렬
- 블록체인
- K-MOOC 단국대학교 홍보단
- 혁신의기술2:신뢰의미래 블록체인을 만나다
- 자바입력받기
- biginteger사용법
- 자바스크립트
- K-MOOC
- 단국대학교 k-mooc
- 자바문자열구분
- 해시
- StringBuilder
- 우선순위큐
- 티스토리챌린지
- Today
- Total
목록CS/DATA STRUCTURE (6)
열정 실천
힙(Heap)은 우선순위 큐(Priority Queue)를 효율적으로 구현하기 위한 자료구조이다. 우선순위 큐는 큐에서 우선 순위가 높은 순으로 데이터가 나가는 형태로 우선순위를 고려하는 운영체제 스케줄링, 네트워크 패킷 처리 등에 사용된다. 힙은 최댓값과 최솟값을 O(1) 시간에 빠르게 찾을 수 있고, 삽입/삭제 연산도 O(log N)으로 효율적이다. 힙은 완전 이진 트리로 구현되는데, 완전 이진 트리란 왼쪽부터 차례로 채워져 트리의 마지막 레벨을 제외하고 모든 레벨이 꽉 차있는 트리의 구조를 말한다. 힙(Heap)은 최대 힙(Max Heap)과 최소 힙(Min Heap)으로 나뉜다. 최대 힙: - 부모 노드가 자식 노드보다 크거나 같은 값을 가진다. - 따라서, 루트 노드는..
🙄 해시테이블이란? key - value 형태를 갖는 하나의 자료구조이다. ket : 무언가를 검색하기 위한 검색어 value : 그 검색어로 나온 결과 - 데이터가 저장되는 곳을 버킷, 슬롯이라고 한다. ✨해시 테이블은 key-value가 1:1로 매핑되어있기 때문에 삽입, 삭제, 검새의 과정에서 모두 O(1)의 시간복잡도를 가진다. 🙄 어떤 문제에서 Hash를 쓰는게 좋을까? String을 기반으로 정보를 기록하고 관리해야 할 때 예를 들어 학생 이름과 성적을 저장하고 검색해야 할때배열을 쓴다면 2차원 배열을 이용해 0번째에는 이름 1번째에는 성적을 저장하고 학생이름으로 검색해 성적을 조회하려면 첫번재 요소부터 확인하며 해당이름을 찾아야한다. 하지만 해시를 쓰면 이름(key 값)으로 ..
메모리 동적 할당이란?? 정적 메모리 : 프로그램이 실행하는 순간 프로그램이 사용할 메모리 크기를 고려하여 메모리를 할당하는 기법 (Static Allocation) 동적 메모리 : 프로그램이 실행 중에 필요한 만큼 메모리를 할당하는 기법 (Dynamic Allocation) - 힙 영역에 할당 동적 메모리 할당하기 메모리 동적 할당을 하는 방법은 Malloc, Calloc Relloc 이렇게 3가지가 있다. 우선 이 함수를 사용하려면 stdlib.h 헤더파일(표준 라이브러리 함수 정의)을 추가해야한다. Malloc malloc 은 인자로 전달된 값에 해달하는 크기의 메모리 공간을 힙 영역에 할당하고, 이 공간의 주소값을 반환한다. - 함수 원형 - void* malloc(size_t size); mal..
효율적인 알고리즘이란 전체 실행 시간이 짧으면서 메모리와 같은 컴퓨터의 자원들을 적게 사용하는 알고리즘 이다. 일반적으로 메모리 공간보다 실행시간이 더 중요하게 생각된다. 그렇다면 실행시간을 측정하기 위해 어떤 방법을 써야할까? 두 개의 알고리즘을 동시에 실행에 비교를 하는 경우에는 무조건 "구현"해야하고, 동일한 조건의 하드웨어여야하고, 소프트웨어환경도 동일해야하기 때문에 효율성을 따지기에 요구사항이 많다. 이와같은 문제점들 때문에 알고리즘을 직접 구현하지 않고도 대략적인 효율성을 분석할 수 있는 방법이 개발되었다. 이것을 알고리즘의 복잡도라고 하고, 알고리즘의 실행시간 분석은 시간 복잡도(time conplexity), 알고리즘이 사용하는 기억 공간 분석을 공간 분석도(complexity)라고 한다...
추상자료형이란? 자료의 집합과 자료에 가해지는 연산들의 집합에 대한 수학적인 명세. 추상자료형을 표현할 때, 데이터는 주로 집합의 개념을 사용하여 표현하고, 연산의 정의에는 연산의 이름, 매개변수, 결과, 기능 등을 기술한다. 추상자료형과 C++,Java 추상 자료형의 개념은 C++과 Java의 특징인 객체지향의 개념과 정확히 일치한다. 객체지향 언어인 C++과 Java에서는 클래스를 사용하여 추상 자료형을 구현한다. 추상 자료형의 "데이터"는 클래스의 멤버변수(속성)로 구현되고, "연산"은 클래스의 멤버함수(메소드)로 구현된다.
자료구조란? 현실 세계에서의 반복적이고 복잡한 자료들을 효율적으로 처리하기위해 컴퓨터는 자료들을 정리하고 조직화하는 여러가지 구조들을 활용한다. 이를 자료구조라고 부른다. 자료구조의 분류 자료구조는 프로그래밍 언어가 기본적으로 제공하는 정수, 실수, 문자와 같은 단순 자료구조와 이와는 다른 복합 자료구조로 나눠지고, 복합 자료구조는 가시 선형 자료구조와 비선형 자료구조로 나누어진다. 프로그램 = 자료구조 + 알고리즘 프로그램은 데이터를 처리하고 있고 이들 자료구조는 자료구조를 사용하여 표현하고 저장된다. 또한, 주어진 문제를 처리하는 절차인 알고리즘이 필요하다. 자료구조와 알고리즘은 밀접한 관계가 있어서 자료구조가 결정되면 그 자료구조에서 사용할 수 있는 알고리즘이 결정된다. 효율적인 알고리즘이란? 전체..