본문 바로가기

자료구조 및 알고리즘

(4)
[자료구조와 알고리즘] 2. 트리, 힙, 그래프 2장. 트리, 힙, 그래프 학습목표 비선형 자료 구조를 사용해야 하는 경우를 판별할 수 있다. 데이터 표현과 문제 해결을 위해 트리 구조를 구현하여 사용할 수 있다. 다양한 방법으로 트리를 순회할 수 있다. 데이터 표현과 문제 해결을 위해 그래프 구조를 구현할 수 있다. 주어진 상황에 맞게 다양한 방법으로 그래프를 표현할 수 있다. 요약해야할 내용 선형 자료 구조와 비 선형자료구조의 데이터 저장 및 관리 방법 비교 트리와 그래프로 해결할 수 있는 복잡한 문제 조사 계층적 문제 순환 종속성 트리 구현 루트(root), 부모(parent), 자식(child), 부분트리(sub tree), 숲(forest) 새로운 자식 삽입, 삭제, 탐색 트리 순회(tree traversal) 제귀함수 전위순회, 중위순회, ..
[자료구조와 알고리즘] 1. 리스트, 스택, 큐 1장. 리스트, 스택, 큐 학습 목표 응용 프로그램에 적합한 자료구조를 사용하는 것이 얼마나 중요한 설명 가능하다. 주어진 문제에 적합한 C++ 내장 자료구조를 이용하여 응용 프로그램을 더욱 쉽게 개발할 수 있다. C++ 에서 제공하는 기능이 주어진 상황에 충분하지 않을 경우 적절한 사용자 정의 선형 자료구조를 구현할 수 있다. 다양한 유형의 선형 자료 구조가 사용될 수 있는 실제 문제를 분석할 수 있고 주어진 문제에 가장 적합한 자료구조를 선택할 수 있다. 요약해야할 내용 자료구조란 적절한 자료구조와 데이터 조작에 적합한 알고리즘 선택이 중요한 이유 선형 자료구조 연속된 자료구조와 연결된 자료구조의 비교 시간복잡도 정적 배열과 동적 배열 캐시 지역성 점근적 시간 복잡도 배열과 연결리스트 다양한 연산에 ..
[자료구조와 알고리즘] C++ Data Structure & algorithm design principles 목차 Part 1. 자료구조(Data Structure) 1. 리스트, 스택, 큐 연속된 자료구조와 연결된 자료구조 std::array std::vector std::forward_list 반복자(itereator) std::list std::deque 컨테이너 어뎁터(container adaptor) 2. 트리, 힙, 그래프 비선형 문제 트리: 상하 반전된 형태 다앙한 트리 구조 힙 그래프 3. 해시 테이블과 블룸 필터 해시 테이블 해시 테이블에서 충돌 C++ 해시 테이블 블룸 필터 Part 2. Algorithm 4. 분할 정복 이진 검색 분할 정복을 이요한 정렬 알고리즘 맵리듀스: 더 높은 추상화 레빌의 분할 정복 기법 5. 그리디 알고리즘(탐욕 알고리즘) 기본적인 그리디 알고리즘 배낭 문제 그래프..
Online Code Visualization 프로그램 코드를 작성한 후 프로그램 코드의 데이터를 위한 저장 장소의 할당과 제어 흐름과 같은 프로그램 코드의 수행을 추적하여 가시화하는 온라인 코드 비주얼라이저로 Python Tutor가 있다. 이는 Python2, Python3을 지원하고 있으며 코드에 특정 테스트 케이스를 통해 프로그램 코드 라인을 단계 별로 추적할 수 있다. 이는 Python 뿐 만이나라 Java/C++/JavaScript /TypeScript/Ruby/C 와 같은 다양한 프로그램 언어를 지원한다. 다음은 Python Tutor 사이트의 첫 화면이다. 다음은 C++ 프로그램은 배열 선언가 동적 메모리 할당 시 Stack과 Heap에서 저장 공간 할당 모습과 데이터 저장 모습을 보이고 있다. C++ 프로그램의 실행 시 각 프로그램의..