cs/알고리즘 2

플로이드 워셜(Floyd-Warshall)

플로이드 워셜 알고리즘이란?모든 지점에서 다른 모든 지점까지의 최단 경로를 모두 구하는 알고리즘한 번 실행하여 모든 노드 간 최단 경로를 구할 수 있다. 핵심 아이디어는 '거쳐가는 정점'을 기준으로 최단 거리를 구하는 것 다익스트라 알고리즘과의 차이점모든 노드 쌍에 대한 최단 거리 계산음의 가중치를 가지는 그래프에서 사용 가능 다익스트라의 경우 양의 가중치를 가지는 그래프에서만 사용소스코드가 다익스트라에 비해 매우 짧아 구현이 쉬움단계마다 '거쳐 가는 노드'를 기준으로 알고리즘을 수행하지만, 매 단계마다 방문하지 않은 노드 중에서 최단 거리를 갖는 노드를 찾을 필요는 없음 다익스트라의 경우 단계마다 최단 거리를 가지는 노드를 하나씩 반복적으로 선택. 이후 해당 노드를 거쳐가는 경로를 확인하며 최단 거리 ..

cs/알고리즘 2024.07.15

자료구조-stack

스택의 정의한쪽 끝에서만 데이터를 넣고 뺄 수 있는 후입선출(LIFO, Last In First Out) 형태의 선형 자료구조 Stack 클래스는 내부에서 최상위 배열인 Object[] 배열을 사용해 데이터를 관리한다. 스택의 구조상단(stack top) : 스택에서 입출력이 이루어지는 부분하단(stack bottom): 반대쪽 바닥 부분요소(element): 스택에 저장되는 것공백 스택(empty stack): 공백 상태의 스택포화 스택(full stack): 포화 상태의 스택 (풀스택) 제공 연산 pop() 가장 위의 항목 제거 push(item) item 하나를 스택 가장 위에 추가 peek() 스택 가장 위 항목을 반환 isEmpty() 스택이 비어있을 때 true 반환 isFull() 스택이 차..

cs/알고리즘 2024.06.30