Java

그래프(Graph)란? 그래프(Graph)는 객체 또는 개체 간의 관계를 표현하는 자료구조다. 그래프는 노드(Node)와 노드 사이를 연결하는 간선(Edge)으로 구성된다. 노드(정점, Vertex) : 일반적으로 개별적인 개체나 개념 간선 : 노드 사이의 관계 그래프는 현실 세계의 다양한 상황을 모델링하고 문제를 해결하는 데에 사용된다. 그래프 구현 방법 그래프는 여러 형태로 구현될 수 있다. 주요한 구현 방법에는 인접 행렬(Adjacency Matrix)과 인접 리스트(Adjacency List)가 있다. 두 가지 구현 방법 중 대부분 인접 리스트 방식을 많이 사용한다. 각각의 구현 방법에 대한 장단점을 알아보면 다음과 같다. 인접 행렬(Adjacency Matrix) 2차원 배열을 사용해 그래프를 ..
자료구조 중 힙(Heap)에 대해 정리해보자. 힙(Heap)이란? 자료구조 중 힙(Heap)은 특정한 순서에 따라 정렬된 요소들을 저장하는 트리 기반의 자료구조이다. Heap은 일반적으로 이진 힙(binary heap)으로 구현되며, 우선순위 큐(priority queue)와 같은 다른 추상 자료형의 구현에 주로 사용된다. Heap은 다음과 같은 특징을 가지고 있다. 완전 이진 트리(Complete Binary Tree) : Heap은 완전 이진 트리의 형태를 가진다. 이는 마지막 레벨을 제외한 모든 레벨이 완전히 채워져 있고, 마지막 레벨은 왼쪽부터 채워져 있는 형태를 말한다. 부모-자식 노드 관계 : Heap의 부모 노드는 항상 자식 노드보다 우선순위가 높거나 같은 값을 가집니다. 이러한 특성은 최대..
자료구조 중 큐(Queue)에 대해 정리해보자. 큐(Queue)란? 큐(Queue)는 일반적으로 선입선출(First-In-First-Out, FIFO) 원칙에 따라 동작하는 자료구조다. 큐는 데이터의 삽입과 삭제가 각각 한쪽 끝에서만 일어나는 구조를 가지고 있다. 큐의 한쪽 끝을 ‘리어(rear)’라고 하고, 다른 한쪽 끝을 ‘프론트(front)’라고 한다. 데이터는 프론트에서 삭제되고, 리어에서 삽입된다. 큐의 기본 연산은 다음과 같다. enqueue(item) : 큐의 리어(rear)에 항목(item)을 삽입한다. dequeque() : 큐의 프런트(front)에서 항목을 삭제하고 반환한다. isEmpty() : 큐가 비어 있는지 여부를 확인한다. size() : 큐의 현재 크기를 반환한다. peek..
오늘은 자료구조 중 Stack에 대해 정리해봤다. 스택(Stack)이란? 자료구조 중 하나로 후입선출(Last-In-First-Out, LIFO) 원칙에 따라 데이터를 저장하는 추상 자료형이다. 스택은 데이터를 저장하는 컨테이너로 데이터를 추가하거나 제거할 수 있다. 주요 연산을 살펴보면 다음과 같다. push : 스택에 데이터를 추가하는 연산이다. 스택의 맨 위에 데이터를 삽입한다. pop : 스택에서 데이터를 제거하는 연산이다. 스택의 맨 위에서 데이터를 삭제하고 반환한다. peek 또는 top : 스택의 맨 위에 있는 데이터를 반환하지만, 스택에서 제거하지는 않는다. isEmpty : 스택이 비어있는지 확인하는 연산이다. size : 스택에 저장된 데이터의 개수를 반환한다. 스택(Stack)의 장점..
자료구조 중 연결 리스트(Linked List)의 개념과 Java 예제 코드를 정리해보자. 연결 리스트(Linked List)란? LinkedList는 자료구조 중 하나로 데이터 요소를 연결된 노드로 표현하는 방식이다. 각 노드는 데이터와 다음 노드를 가리키는 포인터(또는 링크)로 구성된다. 이 포인터를 통해 다음 노드로 이동하면서 데이터를 순차적으로 접근할 수 있다. LinkedList는 동적으로 크기가 조절될 수 있으며, 데이터의 삽입과 삭제가 빠르게 이루어진다는 특징이 있다. LinkedList의 기본 개념을 정리해보면 다음과 같다. 노드(Node) : LinkedList의 기본 구성 요소로, 데이터와 다음 노드를 가리키는 링크(포인터)로 구성된다. 헤드(Head) : LinkedList의 첫 번째..
자료구조 중 배열(Array)에 대해 정리해보자. 배열(Array)이란? 배열(Array)은 자료구조 중 하나로, 동일한 데이터 타입의 요소들을 연속된 메모리 공간에 저장하는 방법이다. 배열은 인덱스(index)를 사용해 각 요소에 접근할 수 있다. 이러한 특징 때문에 배열은 데이터의 순서를 유지하고, 특정 위치의 요소에 빠르게 접근할 수 있는 장점이 있다. 배열(Array)의 장점 및 단점 장점 빠른 접근 : 배열은 인덱스를 사용하여 요소에 빠르게 접근할 수 있다. 인덱스를 알고 있다면 원하는 위치의 요소에 상수 시간(O(1))에 접근할 수 있다. 메모리 공간의 효율성 : 배열은 연속된 메모리 공간에 요소를 저장하므로, 메모리 공간을 효율적으로 사용할 수 있다. 또한, 요소들은 순서대로 저장되기 때문에..
· Java
HashMap에서 특정 key가 존재하는지를 확인해야 할 때가 있다. 이 때는 2가지 방법이 있다. Map.containsKey() Map.get() 하단에서 설명하겠지만 두 가지 방법 중 첫번째 방법인 Map.contatinsKey() 메서드를 사용하는 것을 추천한다. 우선 차례로 알아보자. 1. Map.containsKey() Map의 containsKey() 메서드는 파라미터로 입력 받은 값과 일치하는 key가 있으면 true를, 없으면 false를 리턴한다. public boolean containsKey(Object key) import java.util.HashMap; import java.util.Map; public class CheckExistKeyInHashMap { public sta..
· etc.
싱글톤 패턴(Singleton Pattern)이란? 싱글톤 패턴(Singleton Pattern)은 객체 지향 디자인 패턴 중 하나로, 어떤 클래스가 최초 한번만 메모리를 할당하고 그 메모리에 인스턴스를 생성해 이후에는 그 인스턴스를 계속해서 재사용하는 패턴이다. 즉, 해당 클래스의 인스턴스가 오직 하나만 존재하도록 보장한다. 이 패턴은 전역 변수를 사용하는 것보다 안정적이고 유연한 방식으로 하나의 인스턴스를 생성하고 사용할 수 있다. 또한, 동시에 여러 개의 인스턴스를 생성할 경우에 발생할 수 있는 문제를 예방할 수 있다. 싱글톤 패턴은 다양한 상황에서 사용될 수 있으며, 예를 들어 데이터베이스 연결, 로그 파일 생성 등의 기능에서 유용하게 사용된다고 한다. 싱글톤 패턴의 요소 싱글톤 패턴은 일반적으로..
· Java
지금까지 List를 생성할 때 대부분 new ArrayList()를 사용했었다. 회사에서 다른 분들의 코드를 보다가 Arrays.asList()를 이용한 부분이 있었고 참고해서 사용했는데, 차이점을 정확히 알고 싶어 정리하고자 한다. 1. 다른 class, 다른 return type 다른 class : new ArrayList()와 Arrays.asList()는 다음과 같이 class가 다르다. // new ArrayList() import java.util.ArrayList; // Arrays.asList() import java.util.Arrays; new ArrayList()는 ArrayList를 Arrays.asList()는 Arrays의 정적 클래스인 ArrayList를 리턴한다. 아래는 Ar..
· Java
HashMap과 HashSet을 사용하며 두 가지의 차이점에 대해 정리하고 싶었다. 간단하게 정리해보자. HashMap vs HashSet 차이점 1. 정의 HashMap : Map Interface의 구현체로 HashTable과 유사한 자료구조로 데이터를 저장한다. HashSet : Set Interface의 구현체로, 내부적으로 HashMap을 사용해 데이터를 저장하기 때문에 HashTable과 유사한 자료구조로 데이터를 저장한다고 할 수 있다. 2. 데이터 저장 형태 HashMap : key-value 형태로 데이터를 저장한다. 각 value들이 key에 mapping되어 있다. HashSet : 객체 그 자체를 저장한다. key 값으로는 삽입되는 객체 자체를, 내부 구현 코드에서 필드로 선언한 객..
토발자_Hflug
'Java' 태그의 글 목록 (2 Page)