자료구조 & 알고리즘

이진 트리 자료구조와 재귀 알고리즘 문제에 대한 문제이다. 문제 링크 : https://www.acmicpc.net/problem/1991 문제 참고 참고로 전위 순회, 중위 순회, 후위 순회에 대한 정리가 먼저 필요하다면 아래 게시글을 참고하면 된다. [자료구조] Tree 순회 방법 - 전위/중위/후위 순회 & Java 예시 코드 자료 구조 중 트리가 있다. 트리 구조를 순회하는 방법에는 세 가지 방법이 있다. 전위 순회(Pre-order) 중위 순회(In-order) 후위 순회(Post-order) 이러한 순회 방법은 트리 내의 모든 노드를 방문하는 hoehen-flug.tistory.com 사실 전위/중위/후위 순회를 예시 코드를 통해 이해했다면 이 문제를 푸는 데에도 오랜 시간이 걸리지는 않을 것..
자료 구조 중 트리가 있다. 트리 구조를 순회하는 방법에는 세 가지 방법이 있다. 전위 순회(Pre-order) 중위 순회(In-order) 후위 순회(Post-order) 이러한 순회 방법은 트리 내의 모든 노드를 방문하는 기초적인 방법들로서, 트리 구조를 다루는데 중요한 역할을 한다. 순회 방법은 트리의 형태와 원하는 결과에 따라 다르게 선택될 수 있다. 그렇다면 이 3가지 트리 순회에 대해 알아보자. 전위순회(Pre-order) 전위순회는 다음 순서로 노드를 순회한다. Root - Left - Right 상단의 트리를 전위순회로 순회한다면 다음과 같은 순서로 노드를 순회할 것이다. 전위 순회한 결과 : ABDCEFG 중위순회(In-order) 중위순회는 다음 순서로 노드를 순회한다. Left - R..
알고리즘 중 재귀의 대표적인 문제 하노이의 탑 문제를 풀어보았다. 문제 링크 : https://www.acmicpc.net/problem/11729 풀이 import java.util.Scanner; /** * 첫째 줄에 옮긴 횟수 K를 출력한다. * 두 번째 줄부터 수행 과정을 출력한다. */ public class Main{ static StringBuilder sb = new StringBuilder(); public static void main(String[] args){ Scanner in = new Scanner(System.in); int n = in.nextInt(); int result = hanoi(n, 1, 3, 2); System.out.println(result); System...
알고리즘에 대해 정리하기에 앞서 Big-O 표기법에 대해 먼저 정리해보고자 한다. Big-O 표기법이란? 알고리즘에서 사용되는 Big-O 표기법은 알고리즘의 성능을 분석하고 비교하기 위해 사용되는 표기법으로 알고리즘의 시간 복잡도(실행 시간) 또는 공간 복잡도를 나타내는데 사용된다. Big-O 표기법은 주어진 입력 크기에 대한 알고리즘의 실행 시간 또는 공간 요구 사항을 표현한다. Big-O는 "O"라는 기호와 함께 표기되며, O 다음에는 함수가 나온다. 이 함수는 주어진 입력 크기에 대한 알고리즘의 실행 시간 또는 공간 복잡도를 나타낸다. Big-O 표기법에서는 주로 최악의 경우 시간 복잡도를 나타낸다. 즉, 입력 크기에 따라 알고리즘의 실행 시간이 어떻게 증가하는지, 그 중 '아무리 많이 걸려도 최대..
자료구조 중 해시 테이블(Hash Table)에 대해 알아보자. 해시 테이블(Hash Table)이란? 해시 테이블(Hash Table)은 효율적인 검색과 삽입 연산을 위해 설계된 자료구조다. 이는 키-값 쌍의 데이터를 저장하는데 사용되며, 각 키는 해시 함수를 통해 고유한 인덱스로 변환되어 배열 내에 저장된다. 기본 개념에 대해 살펴보면 다음과 같다. 해시 함수 : 해시 함수는 키를 해시 값으로 변환하는 함수다. 이 해시 값은 고유한 인덱스로 사용된다. 해시 충돌 : 서로 다른 키가 같은 해시 값을 가질 경우 해시 충돌이 발생한다. 이는 해시 함수가 충돌을 완전히 피하는 것이 불가능하기 때문에 주의해야 한다. 해시 테이블 : 해시 테이블은 배열로 구성되어 있으며, 각 배열 요소는 버킷 또는 슬롯이라고 ..
자료구조 중 트리(Tree)에 대해 정리해보자. 트리(Tree)란? 트리(Tree)는 계층적인 구조를 나타내는 비선형 자료구조로 그래프(Graph)의 특수한 형태이다. 트리는 노드(Node)와 간선(Edge)으로 이루어져 있다. 간단히 말해 트리는 하나의 루트 노드를 가지고 있으며, 각 노드는 0개 이상의 자식 노드를 가질 수 있다. 이러한 구조로 인해 데이터를 계층적으로 표현할 수 있다. 트리의 주요 개념과 용어는 다음과 같다. 노드(Node) : 트리의 기본 단위로 데이터를 저장하는 요소다. 각 노드는 부모 노드와 하위 노드(자식 노드)를 가질 수 있다. 루트(Root) : 트리의 맨 위에 있는 노드로 다른 모든 노드는 루트를 향해 이어진 경로를 가지고 있다. 트리는 하나의 루트 노드만을 가진다. 부..
그래프(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)의 장점..
토발자_Hflug
'자료구조 & 알고리즘' 카테고리의 글 목록