Loading...

자바 자료구조3 -자바에서 스택, 큐, 덱 사용법-

1. Stack import java.util.Stack Stack (name) = new Stack(); 여기서 (type)은 reference type으로 스택 안에 들어갈 원소의 타입 import java.util.Stack; public class Main { public static void main(String[] args){ Stack s = new Stack(); } } 2. stack 핵심 메소드 2-1) push(E) 맨 위에 데이터 E를 추가 2-2) size() stack에 들어있는 데이터 수를 반환 2-3) isEmpty() stack이 비어있다면 true, 아니라면 false를 반환 2-4) peek() stack의 가장 위에 있는 데이터를 반환 2-5) pop() stack의 ..

2022. 10. 27. 01:26

그래프의 노드를 정렬하는 위상정렬 정복하기

1. 개요 위상 정렬(topology sort)은 정렬 알고리즘의 일종 위상 정렬은 순서가 정해져 있는 일련의 작업을 차례대로 수행해야할 때 사용할 수 있는 알고리즘 이론적으로, 위상 정렬은 방향 그래프의 모든 노드를 '방향성에 거스르지 않도록 순서대로 나열하는 것'이다. 실제 예를 들어 위상 정렬을 수행하는 전형적인 예시는, '선수과목을 고려한 학습 순서 결정'이 있다. 예를 들어 컴퓨터공학과 커리큘럼에는 '자료구조'과목을 수강한 뒤에, '알고리즘'강의를 수강하는 것을 권장한다. 이 경우에 자료구조와 알고리즘을 각각 노드로 표현하고, 자료구조에서 알고리즘으로 이어질 수 있도록 방향성을 갖는 간선을 그릴 수 있다. 그래프 상에서 선후 관계가 있다면, 위상 정렬을 수행하여 모든 선후 관계를 지키는 전체 순..

2022. 7. 3. 01:25

DFS/BFS 완전정복을 위한 DFS/BFS 기본 이론

1. 그래프의 기본 구조 그래프는 노드(node)와 간선(edge)으로 표현되고 이때 노드를 정점(vertex)이라고도 말한다 그래프 탐색이란 하나의 노드를 시작으로 다수의 노드를 방문하는 것이다 두 노드가 간선으로 연결되어 있다면 '두 노드는 인접하다'(adjacent)라고 말한다 노드를 도시, 간선을 도로라고 생각해보자. A라는 도시(노드)에서 B라는 도시(노드)로 이동하기 위해서 A와 B를 연결하는 도로(간선)를 거친다고 이해하면 쉬울 것이다 2. 프로그래밍에서 그래프를 표현하는 방식 인접행렬(adjacency matrix) : 2차원 배열로 그래프의 연결 관계를 표현하는 방식 인접리스트(adjacency list) : 리스트로 그래프의 연결 관계를 표현하는 방식 인접행렬 방식은 2차원 배열에 각 ..

2022. 6. 29. 02:44

코딩테스트를 위한 스택과 큐 기본 이론

1. 탐색(search) 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 코딩테스트를 통과하기 위해 그래프, 트리 등의 자료구조 안에서 탐색을 할줄 알아야한다 이를 위한 대표적인 탐색 알고리즘이 바로 DFS/BFS 2. 자료구조 데이터를 표현하고 관리하고 처리하기 위한 구조 스택(stack)과 큐(queue)는 자료구조의 기초 개념 3. 스택과 큐에서 고려해야할 부분 스택과 큐는 자료구조의 기초 개념으로 다음의 두 핵심적인 함수로 구성 삽입(push): 데이터를 삽입한다 삭제(pop): 데이터를 삭제한다 실제 스택과 큐를 사용할 때는 삽입과 삭제 외에도 오버플로우와 언더플로우도 고민해야함 오버플로우(overflow): 특정한 자료구조가 수용할 수 있는 데이터의 크기를 이미 가득 찬 상태에서 삽입 연산..

2022. 1. 2. 21:01

파이썬의 스택(stack)과 큐(queue)

1. 스택(stack) 나중에 넣은 데이터를 먼저 반환하도록 설계된 자료구조 Last In First Out(LIFO) Data 입력을 push, 출력을 pop 위 그림1은 스택을 가상적으로 표현한 그림 4를 먼저 넣고 다음에 10을 넣었다 마지막에 들어간 10을 처음으로 빼내는 모습 ------------------------------------------------------------------------------------------------------------------------ 이름 그 자체를 생각해보면 외울것이 아니다 데이터를 넣을수록 계속 쌓이는(stack) 자료구조 쌓여있는 구조(stack)에서 무언가 빼낼려면 안에있는 것보다 밖에있는 것을 먼저 뺄수있다는 것을 생각한다면? --..