벨만 포드 Bellman-Ford
·
Interview/Algorithm
벨만 포드 Bellman-Ford벨만 포드(Bellman-Ford) 알고리즘은 그래프에서 음의 가중치가 있는 간선을 포함한 최단 경로 문제를 해결할 수 있는 알고리즘입니다. 다익스트라(Dijkstra) 알고리즘과 달리 벨만 포드는 음의 가중치도 허용하며, 음의 사이클(negative cycle)이 존재하는지 여부도 확인할 수 있습니다.벨만 포드 알고리즘의 주요 특징그래프: 방향 그래프(directed graph)와 음수 가중치를 허용하는 간선에서 동작.시간 복잡도: O(V * E), 여기서 V는 정점의 수, E는 간선의 수.출발점: 하나의 시작 노드로부터 모든 다른 노드까지의 최단 경로를 계산.음수 사이클 검출: 음의 가중치 사이클이 존재하는지 확인할 수 있음. 사이클이 존재하면 최단 경로를 정의할 수 ..
다익스트라 알고리즘 Dijkstra's Algorithm
·
Interview/Algorithm
다익스트라 알고리즘 Dijkstra's Algorithm다익스트라 알고리즘(Dijkstra's Algorithm)은 가중치가 있는 그래프에서 한 노드에서 다른 모든 노드까지의 최단 경로를 찾는 알고리즘입니다.이 알고리즘은 양의 가중치를 가진 그래프에서만 동작하며, 대표적으로 네트워크 경로 탐색이나 지도를 통한 길찾기 등에 많이 사용됩니다.다익스트라 알고리즘의 동작 원리초기화시작 노드에서 각 노드로 가는 경로의 거리를 저장하는 배열을 만듭니다. 처음에는 시작 노드의 거리는 0으로 설정하고, 나머지 노드의 거리는 무한대로 설정합니다.우선순위 큐(혹은 최소 힙)를 사용하여 탐색할 노드를 관리합니다.최단 경로 계산시작 노드를 우선순위 큐에 넣고, 그 노드를 기준으로 인접한 노드들의 거리를 계산합니다.인접한 노드..
int128_t 64 bit에서 표현을 못하는 정수형 데이터 처리 방식
·
Interview/Algorithm
int128_t 64 bit에서 표현을 못하는 정수형 데이터 처리 방식C언어에서 int64_t로 표현할 수 없는 엄청 큰 정수를 다루기 위해서는 아래와 같은 방법을 사용할 수 있습니다.다중 정밀도 정수 라이브러리 사용 (Multiple Precision Arithmetic Library)C언어에서 기본적으로 제공하는 정수 타입으로는 큰 정수를 표현하기 어렵기 때문에, 외부 라이브러리인 GMP (GNU Multiple Precision Arithmetic Library)와 같은 다중 정밀도 수학 라이브러리를 사용하는 것이 좋습니다.GMP는 매우 큰 정수, 유리수, 부동 소수점 수를 효율적으로 다룰 수 있는 기능을 제공합니다.이 라이브러리를 사용하면 임의의 정밀도로 큰 정수를 계산하고 저장할 수 있습니다.m..
FIFO Queue
·
Interview/Algorithm
FIFO QueueQueue(큐)는 데이터 구조 중 하나로, 먼저 들어간 데이터가 먼저 나오는(FIFO, First-In-First-Out) 방식으로 작동합니다. 큐는 선입선출 구조이기 때문에, 대기열, 작업 스케줄링, 메시지 전달 등 여러 상황에서 유용하게 사용됩니다.큐의 기본 연산은 다음과 같습니다:Enqueue: 큐의 뒤쪽(rear)에 데이터를 추가하는 연산.Dequeue: 큐의 앞쪽(front)에서 데이터를 제거하고 반환하는 연산.Front/Peek: 큐의 가장 앞에 있는 데이터를 반환하되, 큐에서 제거하지 않는 연산.isEmpty: 큐가 비어 있는지 확인하는 연산.큐는 배열 또는 연결 리스트로 구현될 수 있으며, Python에서는 collections 모듈의 deque나 queue 모듈의 Que..
김 정출
'Interview/Algorithm' 카테고리의 글 목록