Programming/Algorithm
최단 경로 문제 - 다익스트라 알고리즘
최단 경로 문제 - 다익스트라 알고리즘
2024.04.09최단 경로 문제 최단 경로 문제는 그래프 내의 두 정점(노드) 간의 가장 짧은 경로, 즉, 각 간선들의 가중치의 합이 최소가 되는 경로를 찾는 문제이다. 그래프의 형태에 따라 다양한 최단 경로 알고리즘이 존재한다. 이러한 알고리즘은 그래프의 크기, 가중치의 존재 유무 또는 음수 사이클의 존재 여부 등에 따라 다르게 사용한다. 대표적인 알고리즘 복습할 겸 대표적인 최단 경로 알고리즘을 찾아봤다. 다익스트라 알고리즘: 가중치가 음수가 아닐 때 사용될 수 있다. 다익스트라가 대학원생이던 시절 여자 친구와 함께 커피숍에 갔다가 20분 만에 고안한 알고리즘으로도 유명하다. 벨만-포드 알고리즘: 음수인 가중치를 처리할 수 있는 알고리즘이다. 음수 사이클을 탐지할 수 있는 것이 특징이다. 플로이드-워셜 알고리즘: 가..
제네릭 프로그래밍의 정의
제네릭 프로그래밍의 정의
2019.07.25제네릭 프로그래밍이란? 데이터 형식과 관련 없이, 알고리즘이나 자료구조를 효율적으로 설계하는 프로그래밍 방식을 뜻한다. 나중에 정의가 되는 데이터 형식 type(int, float, double, string, ... , 등 모두될 수 있다)을 매개변수로 하는 메서드나 클래스나 인터페이스를 만드는 것과 같다. 제네릭 프로그래밍은 코드의 효율을 넓히기 위해 쓰인다. 어떤 함수를 모든 자료형이 통하도록 설계하면 자료형이 바뀔 때마다 오버로딩해서 새로 만들 필요도 없고 재사용성도 높다! Generic C# Max Method using System; class Program { //IComparable인 자료형 모두에 대해 동작한다. private static type Max(type a, type b) wh..