배열이란? 배열(Array): 동일한 데이터 유형의 요소들을 순서대로 저장하는데 사용되는 선형 자료구조. 각 요소는 배열내에서 고유한 인덱스를 가지며, 이 인덱스를 사용하여 해당 요소에 접근할 수 있다. 배열에 대한 특징은 다음과 같다. 인덱스 배열의 각 요소는 고유한 인덱스를 가진다. 인덱스는 0부터 시작하여 배열의 크기보다 1 작은 값까지의 정수이다. 인덱스를 통해 특정 요소에 빠르게 접근할 수 있다. 고정된 크기 배열은 일반적으로 고정된 크기를 가지며, 한 번 생성된 배열은 크기를 변경할 수 없다. 배열의 크기는 초기에 정의되며, 이 크기에 맞게 메모리가 할당된다. 연속적인 메모리 할당 배열은 연속적인 메모리 공간에 요소를 저장한다. 이는 각 요소의 크기가 동일하다는 가정 하에 가능하며, 이는 빠른..
Collection List List: 여러 항목을 순서대로 저장하는 자료 구조. 가변적인 크기를 가진 배열이라 할 수 있다. List의 특징으로는 다음과 같다. 순서가 존재한다. List의 각 요소들은 특정한 순서를 가지고 있다. 이는 요소들이 추가된 순서를 유지한다는 의미이다. 인덱스로 관리한다. 각 항목은 0부터 시작하는 인덱스를 가지고 있어 해당 인덱스를 사용하여 요소에 접근할 수 있다. 동적으로 크기가 변경된다. List는 일반적으로 크기를 동적으로 조정할 수 있는 가변적인 자료 구조이다. public interface List extends Collection { // 요소 추가 boolean add(E element); // 인덱스에 요소 추가 void add(int index, E elem..
자료구조 란? 자료구조: 데이터를 효율적으로 구조화하고 저장하는 방법을 다루는 구조. 데이터를 적절한 형태로 조직화하여 효과적으로 처리할 수 있도록 돕는 구조와 알고리즘의 집합을 의미한다. 프로그램이 데이터를 적절하게 저장하고 검색하며, 데이터 간의 관계를 관리하는 데에 중요한 역할을 한다. 자료 구조에는 다양한 유형이 있으며, 선택한 자료구조에 따라 프로그램의 성능이 크게 영향을 받을 수 있다. 몇 가지 흔히 사용되는 자료구조에는 배열, 연결 리스트, 스택, 큐, 트리, 그래프 등이 포함된다. 이러한 자료구조들은 각각 특정한 작업이나 문제 해결에 효과적인 도구로 사용될 수 있다. C++의 STL과 같이 자바에서도 데이터를 저장하는 자료구조들을 한 곳에 모아 편리하게 관리하고 사용하도록 제공한다. 이를 ..
해시(Hash)란? 💡해시: 다양한 길이를 가진 데이터를 고정된 길이를 가진 데이터로 매핑한 값이다. 해시를 이용하면 즉시 저장하거나 찾고자 하는 위치를 참조할 수 있으므로 더욱 빠른 속도로 처리할 수 있다. Key와 Value 한 쌍으로 존재하고 key값이 배열의 인덱스로 변환되기 때문에 시간복잡도가 O(1)에 수렴하게 된다. 💡해시 함수: 임의 크기 데이터를 고정 크기 값으로 매핑하는 데 사용할 수 있는 함수를 말한다. 성능 좋은 해시 함수들의 특징은 다음과 같다. 해시 함수 값 충돌의 최소화 쉽고 빠른 연산 해시 테이블 전체에 해시 값이 균일하게 분포 사용할 키의 모든 정보를 이용하여 해싱 해시 테이블 사용 효율이 높을 것 해시 테이블이란? 💡해시 테이블: (key, value) 한쌍으로 데이터를 ..
트리 란? 💡트리: 단반향 그래프의 한 구조로, 하나의 뿌리로부터 가지가 사방으로 뻗는 형태가 나무와 닮았다고 해서 트리라 부르는 자료구조이다. 데이터가 바로 아래에 있는 하나 이상의 데이터에 무방향으로 연결된 계층적 자료구조. 비선형구조이다. 트리 구조는 루트(root)라는 하나의 꼭짓점 데이터를 시작으로 여러 개의 데이터를 간선(edge)으로 연결한다. 각 데이터를 노드(node)라 부르며, 두 개의 노드가 상하 계층으로 연결되면 부모/자식 관계를 가지게 된다. 위 그림에서 1이 2와 3의 부모 노드이며, 2와 3은 1의 자식노드이다. 자식이 없는 노드는 나무의 잎과 같다고 하여 리프 노드(Leaf Node)라 부른다. Tree는 깊이와 높이, 레벨을 측정할 수 있다. 깊이(depth): 루트로부터 ..
DFS, BFS에 대한 이야기를 하려다 어쩌다보니 그래프를 작성하게 되었다.. 안좋을 점은 없으니까.. 블로그에 남겨두고 간다... 그래프 란? 💡그래프: 여러 개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조 그래프의 구조 두 점 사이에 이어지는 그림의 갈색 선은 두 점이 직접적인 관계라는 것을 표현해준다. 그렇다면, 몇 개의 점과 선에 걸쳐 이어진 두 점은 간접적인 관계에 있다고 표현할 수 있다. 하나의 점을 그래프에서는 정점(vertex)이라 표현하고, 그림의 갈색 선을 간선(edge)이라고 부른다. 두 정점이 간선으로 이어져 있다면 이 두 정점은 인접한다고 이야기한다. 그래프의 종류 그래프의 종류에는 그림처럼 3가지의 종류가 있다. 간선에 대한 값이 정해지지 않고 양방향인 "비가중치..