본문 바로가기

알고리즘14

그래프(Graph)의 구현 👉 인접 리스트(Adjacency List)와 인접 행렬(Adjacency Matrix) 간선으로 연결되어 있는 노드들은 인접하다(adjacent)라고 표현하며, 그래프를 구현하는 방식은 다음과 같다. 인접리스트(Adjacency List) 그래프를 표현하는 가장 일반적인 방법. 연결 리스트를 활용해 표현하는 방식. 모든 정점을 인접 리스트에 저장한다. 즉, 각각의 정점에 인접한 정점들을 리스트로 표시한다. 배열(해시테이블)과 배열의 각 인덱스 마다 존재하는 또 다른 리스트(배열, 동적 가변 크기 배열(ArrayList), 연결리스트(LinkedList) 등)를 이용해서 인접 리스트를 표현 정점의 번호만 알면 이 번호를 배열의 인덱스로 하여 각 정점의 리스트에 쉽게 접근할 수 있다. 예) 0: 1 1: 2 2: 0, 3 3: 2 4: 6 5: 4 무방향 그래프에서 (a, b) 간선은 두번 저.. 2023. 4. 10.
선형구조👉 큐(Queue)와 덱(Queue) 그리고 스택(Stack) 큐(Queue) 선입선출(FIFO, First In First Out). 즉, 먼저 입력/삽입 된 데이터부터 출력/제거 하는 방식이다. 한쪽은 입력, 한쪽은 출력이 가능한 단방향 구조이다. 큐는 데이터 삽입(append)와 데이터 삭제(popleft) 이 핵심적인 함수로 동작한다. append 함수: 리스트 내, 좌측에서 우측 순서대로(index 증가) 데이터를 추가해 준다. popleft 함수: 리스트 내, 가장 좌측에 있는 데이터 한개를 삭제해 준다. 큐 사용할 때, 오버플로우(overflow)와 언더플로우(underflow) 발생에 유의해야 한다. 오버플로우(overflow): 큐에 저장할 수 있는 데이터의 크기를 초과한 상태에서 데이터 삽입을 수행할 때 발생한다. 언더플로우(underflow): .. 2023. 4. 10.