최단경로(shortest path) 문제네트워크에서 정점 u 와 정점 v 를 연결하는 경로 중에서 간선들의 가중치 합이 최소가되는 경로를 찾는 문제가중치 : 거리, 비용, 시간 등가중치가 없는 그래프 : 간선의 개수가 가장 적은 경로가 최단경로가중치가 있는 그래프 : 시작노드에서 마지막 노드까지 이동할 때 거치는 간선의 가중치의 총합이 최소가 되는 것.다익스트라 알고리즘(Dijkstra algorithm)네트워크에서 하나의 시작정점에서 모든 다른 정점까지의 최단경로를 찾는 알고리즘가중치가 있는 알고리즘은 대부분 다익스트라 알고리즘을 사용한다고 보면된다.다익스트라 알고리즘은 양의 가중치만 있는 그래프에서만 동작하므로 음의 가중치가 있는 그래프에서 제대로 동작하지 않는다.다익스트라 알고리즘은 한 번 방문한 ..
Algorithm
Queue(큐) 정의 한쪽 끝에서 자료를 넣으면 다른 한쪽 끝에서 자료를 뺄 수 있는구조로 쉽게 말해서 먼저들어온 데이터가 먼저 나오는 구조라고해서 FIFO(First In First Out)라고 부른다. 큐의 연산 enqueue : 데이터를 큐에 삽입 dequeue : 제일 첫 번째 들어온 데이터를 제거 큐의 전단은 front, 후단은 rear로 이루어짐 새로운 데이터가 들어오면 rear가 하나씩 증가 데이터를 빼내면 front가 다음 queue에 저장되어 있는 데이터를 가리킴 enqueue void enqueue(Object[] queue, int data) { queue[rear++] = data; } dequeue Object dequeue(Object[] queue) { queue[front++..
스택(Stack) 먼저 들어간 데이터가 가장 마지막에 나오는 구조(Last In, First Out : LIFO) 삽입과 삭제가 한쪽 끝에서만 자료를 넣고 뺄 수 있다. ex) 자동메모리, 네트워크 프로토콜 스택(Stack)의 주요 기능 스택의 초기화 int stack[100]; //스택 배열 int size = 0; // 스태의 크기 삽입(Push) 스택 위에 새로운 노드를 쌓는 작업 void push(int data) { stack[size] = data; size = size + 1; } 삭제(Pop) 스택에서 최상위 노드를 걷어내는 작업 int pop() { if (size < 0) return 0; int pop = stack[size]; size = size - 1; return pop; } ..
알고리즘(Algorithm) 알고리즘은 수학, 컴퓨터과학, 언어학 또는 관련분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것을 말한다. 계산 또는 작업을 처리하기 위한 순서 요리의 레시피(요리의 재료를 이용하여 레시피 대로 요리한 다음 요리를 완성) 특정문제를 컴퓨터로 해결하기 위한 순서 어떤 문제를 해결하는 방법을 모두 알고리즘이라 한다. 입력 0개 이상의 입력이 존재햐아한다 출력 1개 이상의 출력이 존재해야한다 명백성 각 명령어의 의미는 모호하지 않고 명확해야한다 유한성 한정된 수의 단계 후에는 반드시 종료되어야한다 유효성 각 명령어들은 실행 가능한 연산이어야 한다 코딩 테스트나 인터뷰에서 알고리즘을 보는 이유는 문제를 모델링하고 해결하는 능력을 알아보기 위..