이전 포스팅에서 그래프 탐색 이론 중 하나인 DFS (깊이 우선 탐색) 에 대해 배우고, 실제 구현하는 코드를 살펴보았다. 그래프 탐색 알고리즘 - DFS (깊이 우선 탐색) 코드 구현 [자료구조C#] 그래프 탐색 알고리즘 - DFS (깊이 우선 탐색) 코드 구현위 포스팅에서 우리는 그래프 예시를 통해 DFS가 무엇인지에 대해 이해했다.이제 실제로 이 인물 관계도 그래프와 DFS를 C# 코드로 구현해보자.지난 포스팅에서도 잠깐 살펴 보았지만, 우선 이 인nybot-house.tistory.com이번 포스팅에서는 그래프 탐색 이론 중 하나인 BFS (Breadth-First Search, 너비 우선 탐색)에 대해 알아보자.BFS 너비 우선 탐색이란?BFS는 그래프 탐색 알고리즘 중 하나로, 시작 정점에서 ..
C# 자료구조, 알고리즘, 길찾기
위 포스팅에서 우리는 그래프 예시를 통해 DFS가 무엇인지에 대해 이해했다.이제 실제로 이 인물 관계도 그래프와 DFS를 C# 코드로 구현해보자.지난 포스팅에서도 잠깐 살펴 보았지만, 우선 이 인물 관계도를 그래프로 구현하는 방법에는 크게 2가지가 있다. 배열을 사용해 인접 행렬을 만드는 방법과, 리스트 배열을 사용해서 인접 리스트를 만드는 방법이다. class Graph{ //모든 정보를 들고 있는 방식, 배열 사용 int[,] adj = new int[6, 6] { {0, 1, 0, 1, 0, 0}, //0번 카리나 정점 연결 정보 {1, 0, 1, 1, 0, 0}, //1번 제니 정점 연결 정보 {0, 1, 0, 0, 0, 0}, //2번 지수 ..
https://nybot-house.tistory.com/113 [자료구조] 그래프 개요자료 구조 중 그래프에 대해 알아보자.(기본 교과 과정에서 배웠던 수학의 그래프와는 전혀 관계 없음을 밝힌다)그래프란?: 현실 세계의 사물이나 추상적인 개념 간의 연결 관계를 표현하는데nybot-house.tistory.com이전 포스트에서 그래프의 개요에 대해 알아 보았다. 이제 실제 그래프를 구현해보고, 이 그래프를 탐색하는 방법 중 하나인 DFS(깊이 우선 탐색) 방법에 대해 알아보자.그래프 생성그래프를 구현해보기에 앞서서, 앞서 만들어 봤던 가상의 소셜 네트워크 관계도를 생각해보자.이제 우리는 그녀들과 데이트를 하려고 한다. 다만 서로 관계가 있는, 즉 연결되어 있는 인물들만 만날 수 있다. 우리는 그녀들을 모..
자료 구조 중 그래프에 대해 알아보자.(기본 교과 과정에서 배웠던 수학의 그래프와는 전혀 관계 없음을 밝힌다)그래프란?: 현실 세계의 사물이나 추상적인 개념 간의 연결 관계를 표현하는데 사용되는, 정점과 간선으로 구성된 데이터 구조이다.정점(Vertex): 데이터를 표현 (사물, 개념 등). 그래프의 기본 단위로, 각 정점은 고유한 값을 가질 수 있다. 정점은 일반적으로 원이나 점으로 표시된다.간선(Edge): 정점간의 연결을 나타낸다. 간선은 방향이 있을 수도 있고, 없을 수도 있다. (일방향일 수도, 양방향일 수도 있다는 것).ex) 소셜 네트워크 관계도, 지도와 길찾기, 웹 페이지 링크위 예시에서 각 인물들이 정점(Vertex)가 될 것이고, 서로 친구 사이임을 표시하는 선이 간선이 될 것이다. 이..
선형 자료 구조인 스택과 큐는 데이터 구조에서 중요한 역할을 하는 두 가지 개념이다. 면접에서 자주 물어보는 내용이니 잘 숙지해 둘 필요가 있다. (*선형 자료 구조: 데이터가 순차적으로 배열되어, 각 요소가 정확히 하나의 앞 요소와 하나의 뒤 요소를 가지는 구조이다. 데이터의 순서가 중요하며, 요소 간의 관계가 일대일로 연결되어 있다.)스택(Stack)스택은 선형 자료 구조의 한 종류로, 후입선출 (LIFO, Last In First Out) 원칙에 따라 작동하는 데이터 구조이다. 즉, 마지막에 삽입된 요소가 가장 먼저 제거된다. 스택의 각 요소는 다음과 같은 방식으로 정렬된다.Push: 스택의 맨 위에 요소를 추가한다.Pop: 스택의 맨 위에 있는 요소를 제거하고 반환한다.Peek: 스택의 맨 위에 ..
C#에서 동적 배열(dynamic array)은 크기를 동적으로 조정할 수 있는 배열을 의미한다. 기본적인 배열과는 달리, 동적 배열은 크기가 고정되어 있지 않아 필요에 따라 요소를 추가하거나 제거할 수 있다. 즉, 동적으로 조절 가능하다. C#에서는 List가 대표적인 동적 배열의 예이다. List는 System.Collections.Generic 네임스페이스에 포함되어 있으며, 요소의 추가, 제거, 검색 등의 다양한 기능을 제공한다.List의 주요 메서드Add(T item): 리스트에 요소를 추가합니다.Remove(T item): 리스트에서 특정 요소를 제거합니다.RemoveAt(int index): 리스트의 특정 인덱스에 있는 요소를 제거합니다.Clear(): 리스트의 모든 요소를 제거합니다.Cou..
C#의 배열을 한 마디로 정의하자면, 동일한 데이터 타입의 요소들을 연속된 메모리 공간에 고정된 크기로 저장하는 데이터 구조이다. 배열의 크기는 고정되어 있으며, 한 번 설정되면 변경할 수 없다. 그렇기 때문에 정적 크기 배열이라고도 한다. 배열의 인덱스는 0 부터 시작된다.배열의 특징1. 고정 크기: 배열의 크기는 한 번 설정되면 변경할 수 없다.2. 타입 안정성: 배열은 동일한 타입의 요소만 저장할 수 있다.3. 효율성: 배열은 메모리의 연속된 공간을 차지하며, 인덱스를 통해 빠르게 접근할 수 있다.4. 다차원 배열: C#에서는 2차원 이상의 다차원 배열도 지원한다.주의사항 C# 배열은 간단한 데이터 구조를 관리할 때 매우 유용하지만, 크기를 동적으로 조정해야 하는 상황에서는 'List'와 같은 동적..
*자료 구조 알고리즘을 공부하기에 앞서 알아야 할 것은 책으로 외우는 것은 전혀 쓸모가 없다는 것이다.애초에 실행활에 도움을 주기 위해 발전한 영역이기 때문에 실제 어떻게 활용할 것인지 고민하면서 공부해야 학습하기 용이하다.선형 구조 (Linear Structure) 선형 구조는 데이터 요소들이 일렬로 연결된 구조이다. 각 요소는 전후의 요소와 직접적으로 연결되어 있으며, 이런 연결은 순차적으로 이루어진다. 대표적인 선형 구조에는 다음과 같은 것들이 있다.배열(Array): 고정된 크기의 연속된 메모리 블록으로 이루어진 데이터 구조이다. 각 요소는 인덱스를 통해 접근할 수 있다.연결 리스트(Linked List): 각 요소가 다음 요소에 대한 포인터를 가지고 있는 구조이다. 단일 연결 리스트, 이중 연결..