본문 바로가기

# 01/자료구조 & 알고리즘

[알고리즘] Dynamic Programming 다이나믹 프로그래밍 - 다이나믹 프로그래밍은 메모리를 적절히 수행하여 수행 시간 효율성을 비약적으로 향상시키는 방법 이다. - 이미 계산된 결과(작은 문제)는 별도의 메모리 영역에 저장하여 다시 계산하지 않도록 한다. - 다이나믹 프로그래밍의 구현은 일반적으로 두가지 방법(탑다운, 보텀업)으로 구성된다. - 동적(Dynamic) 이란 ? = 자료구조에서 동적 할당은 '프로그램이 실행되는 도중에 실행에 필요한 메모리를 할당하는 기법'을 의미한다. = 반면에 다이나믹 프로그래밍에서 다이나믹은 별다른 의미 없이 사용된 단어이다. 다이나믹 프로그래밍은 문제가 다음 조건을 만족할 때 사용할 수 있다. 1. 최적 부문 문제(Optimal Substructure) - 큰 문제를 작은 문제로 나눌 수 있으며 작은 문제..
[자료구조] 링크드 리스트 04. 링크드 리스트(Linked List) 1. 링크드 리스트 구조 - 연결 리스트라고도 함 - 배열은 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조 - 링크드 리스트는 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 데이터 구조 - 본래 C 언어에서는 주요한 데이터 구조이지만, 파이썬은 리스트 타입이 링크드 리스트의 기능을 모두 지원한다. 2. 링크드 리스트 기본 구조와 용어 - 노드(Node) : 데이터 저장 단위(데이터값, 포인터)로 구성 - 포인터(pointer) : 각 노드 안에서, 다음이나 이전의 노드와의 연결 정보를 가지고 있는 공간 (null 인 경우 마지막 데이터라는 뜻임.) class Node: def __init__(self, data): self.data = da..
[자료구조] 스택 03. 스택 (Stack) - 데이터를 제한적으로 접근할 수 있는 구조 - 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조 - 가장 나중에 쌓은 데이터를 가장 먼저 빼낼 수 있는 데이터 구조 - 큐 : FIFO 정책 - 스택 : LIFO 정책 1. 스택 구조 스택은 LIFO(Last In, First Out) 또는 FILO(First In, Last Out) 데이터 관리 방식을 따름 대표적인 스택의 활용 - 컴퓨터 내부의 프로세스 구조의 함수 동작 방식 주요 기능 - push() : 데이터를 스택에 넣기 - pop() : 데이터를 스택에서 꺼내기 2. 스택 구조와 프로세스 스택 - 스택 구조는 프로세스 실행 구조의 가장 기본 - 함수 호출 시 프로세스 실행 구조를 스택과 비교해서 이해 필요 3. 자료 구조..
[자료구조] 자료구조 이론 / 배열 / 큐 자료구조 : 데이터 구조, data structure 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조. 대표적은 자료구조 - 배열, 스택, 큐, 링크드리스트, 해쉬테이블, 힙 등 알고리즘 : 어떤 문제를 풀기위한 절차/방법 어떤 문제에 대해 특정한 입력을 넣으면 원하는 출력을 얻을 수 있도록 만드는 프로그래밍 자료구조와 알고리즘이 중요한 이유 어떤 자료구조와 알고리즘을 쓰느냐에 따라 성능이 천지차! 01. 배열 (Array) 데이터를 나열하고, 각 데이터를 인덱스에 대응하도록 구성한 데이터 구조 파이썬에서는 리스트 타입이 배열 기능을 제공함 1. 배열은 왜 필요할까? 같은 종류의 데이터를 효율적으로 관리하기 위해 사용 같은 종류의 데이터를 순차적으로 저장 장점 - 빠른 접근 가능 - 첫 데이터의..