본문 바로가기

Devops/Data Structure6

[Python] 자료구조 LinkedList 구현하기 ▏목적 ◦ 자료구조 Linked List 이해하기 ◦ Python으로 Linked List 구현하기 ▏자료구조 Linked List 란? Linked List (연결 리스트)란 크기 변경이 유연한 자료구조다. 때문에 데이터를 자유롭게 삽입 · 삭제할 수 있다는 장점이 있다. 집합의 단위를 List, 각 요소들의 단위를 Node 라고 부른다. LinkedList는 한 줄로 연결된 형태로, 리스트의 첫 번째 노드를 Head (헤드), 마지막 노드를 Tail (테일) 이라고 한다. 각 노드는 1. 데이터의 내용을 담는 부분 2. 다음 노드의 주소값을 지닌 포인터 변수 로 구성되어 있다. LinkedList를 배열과 비교하여 장단점을 살펴보자. 장점 - 삽입, 삭제의 용이성 배열은 index 로 크기가 정해져 .. 2023. 1. 12.
검색(탐색) 알고리즘 이란 무엇인가? ▏목적 ◦ 검색 알고리즘 이해하기 ▏시작하는 말 알고리즘 공부를 하기 위하여 프로그래머스 Lv 2문제들을 꾸준히 하루에 한 문제씩 풀어나가는 중이다. 나는 알고리즘을 따로 배워본 적 없이 JAVA의 기초 지식만 있었기 때문에 1 / 3 정도 풀고 나니 남은 문제들은 구현은 해도 효율성이 좋지 않거나 손쉽게 풀 수 없는 문제들만 남았다. 때문에 나는 제대로 된 알고리즘 개념부터 공부해야겠다는 생각을 했다. 그래서 오늘부터 알고리즘 하나씩 공부한 후 이 블로그에 정리해보려고 한다. 오늘 공부한 것은 검색알고리즘으로 선형 검색과 이진 검색이다. ▏정의 선형 검색 : 무작위로 늘어놓은 데이터 집합 일 때 적절한 검색 알고리즘 이진 검색 : 일정한 규칙으로 늘어놓은 데이터 집합 일 때 적절한 검색 알고리즘 해시법.. 2021. 6. 18.
큐(Queue) 란 무엇인가? ▏큐(Queue) 큐는 스택과 반대로 FIFO(First-In-Last-Out) 즉, 선입선출 구조로 생각하면 된다. 다시 말하면, 한 쪽 끝에서 삽입이 이루어지고 반대쪽에서 삭제가 이루어지는 구조이다. 따라서 주로 데이터가 입력된 시간순대로 처리해야 할 경우에 사용된다. 큐에 값 추가 하는것을 Enqueue 라 하고, 값 삭제하는 것을 Dequeue 라 한다. ▏Queue연산 add() / offer() : 큐에 값을 추가한다. remove() : 큐에 가장 앞쪽에 있는 항목을 제거한다. poll() : 큐에 첫번째 값을 반환한 후 제거한다. (비어있다면 null) clear() : 큐에 모든 요소를 제거한다. isEmpty() : 큐가 비어있으면 True 아니면 False ▏참고자료 Queue를 활용.. 2021. 6. 1.
스택(Stack)이란 무엇인가? ▏목적 ◦ Stack 이해하기 ▏시작하는 말 스택 · 큐에 대한 개념을 알지 못하고 알고리즘 문제를 풀었던 적이 있었다. 도저히 해결법을 몰랐었는데 지인이 큐로 풀면 된다고 했었던 기억이 있다. 그 때 큐를 처음 알게 되었다. 하지만 정확한 개념을 이해하지 못한채로 넘어갔었다. 올 해 초, 정보처리산업기사 자격증을 취득하였고 그 과정에서 스택 · 큐 자료구조를 제대로 공부하게 되었다. 그래서 오늘 그 개념에 대해 설명해보려고 한다. 스택 · 큐 포스팅 모두 내가 직접 그림판에서 그린 것이라 그림들이 조금 엉성할 수 있다. ▏스택(Stack) 스택은 LIFO(Last-In-First-Out) 즉, 후입선출 구조로 생각하면 된다. 쉽게 말해서, 차곡차곡 쌓아올리는 개념으로 보면 된다. 삽입 삭제 모두 Top.. 2021. 5. 31.
JAVA 로 다익스트라 구현하기 | 목적 ◦ 다익스트라 알고리즘 Java로 구현하기 | 시작하는 말 다익스트라의 개념, 순서가 이해가 안된다면 다익스트라란 무엇인가 이 포스트를 먼저 보고 오면 좋다. | 초기 설정 다익스트라를 만들기에 앞서 변수 두가지를 설정해줘야 한다. distance변수는 각 노드에 갈 수 있는 최단거리를 저장한다. visit변수는 해당 노드를 방문 했는지를 체크할 변수다. int distance[] = new int[N]; //최단거리들을 저장할 배열을 만든다. boolean visit[] = new boolean[N]; //해당노드 방문여부를 체크할 배열을 만든다. | 예제 (JAVA) public class Dijkstra { private static int n; private static int maps[.. 2021. 5. 13.
다익스트라(Dijkstra)란 무엇인가? ▏목적 ◦ 다익스트라 알고리즘 이해하기 ▏시작하는 말 프로그래머스에서 "배달"이라는 문제를 풀어보았는데, 이런 유형의 문제는 처음 접해봐서 그런지 어떻게 풀어야 할지 감조차 오지 않았다. 그래서 구글에서 여러 알고리즘들을 살펴보다 최단거리를 구하는 다익스트라를 알게 되었다. 이 방법이라면 이 문제를 해결 할 수 있을 것 같아 다익스트라를 충분히 이해하고, 다시 풀어보았는데 손쉽게 풀었다. 완벽히 다익스트라를 알게된 지금, 내가 직접 문제를 만들어 설명해보려 한다. ▏다익스트라(Dijkstra) 란 무엇인가? 다익스트라는 최단거리를 탐색하는 방법이다. 쉽게 말해 특정한 한 점에서 다른 모든 점까지 가는 경로의 최소를 구하는 것이다. 이것의 가장 큰 특징은 한 점 까지의 최단거리를 구할 때 그 전까지 구한 .. 2021. 5. 11.
반응형