본문 바로가기

반응형

Algorithm

(55)
[알고리즘](Python) 그래프 개념과 파이썬 코드 구현 참고 자료: 파이썬으로 배우는 자료 구조 핵심 원리(양태환) 6.1 그래프 용어 정리 그래프는 정점(vertex)과 에지(edge)로 이루어진다. vertex는 어떤 대상의 객체를 말하고 edge는 그 vertex를 잇는 선을 말한다. 이 vertex의 집합을 V(G), edge의 집합을 E(G)라고 한다. 무방향 그래프인 경우에는 G = (V,E), 방향 그래프인 경우에는 G = {V,E}라고 표기한다. 아래에서부터는 그래프에 사용되는 용어들에 대해 정리해보자. 무방향 그래프(undirected graph) 그림과 같이 방향이 없는 그래프를 무방향 그래프라고 한다. 무방향 그래프에서는 edge의 방향이 없으므로 (0,1)과 (1,0)이 같다. 따라서 vertex의 개수가 n개라면 그 그래프의 최대 ed..
[알고리즘](Python) 백준 2696번 중앙값 구하기 - 우선순위 큐 문제 https://www.acmicpc.net/problem/2696 2696번: 중앙값 구하기 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 수열의 크기 M(1 ≤ M ≤ 9999, M은 홀수)이 주어지고, 그 다음 줄부터 이 수열의 원소가 차례대로 주 www.acmicpc.net 주제 우선순위 큐 시간 / 메모리 제한 1 초 / 128 MB 정답 비율 49.190% 어떤 수열을 읽고, 홀수 번째 수를 읽을 때 마다 지금까지 입력받은 값의 중앙값을 출력하는 프로그램을 작성하시오. 예를 들어 수열이 1, 5, 4, 3, 2 홀수 번째 수는 1번째 수, 3번째 수, 5번째 수 1번째 수를 읽었을 때 중앙값은 1, 3번째 수를 읽었을 때 4, 5..
[알고리즘](Python) 트리 참고 자료: 파이썬으로 배우는 자료 구조 핵심 원리(양태환) 7.1 트리 용어 정리 관계 트리에는 관계의 개념으로, 부모(parent), 자식(child), 조상(ancestor), 자손(descendant)가 있다. 노드 2와 노드 3은 노드 1의 자식이다. 반대로 노드1은 노드 2,3의 부모이자 루트 노드이다. 노드 1은 노드 4,5,6,7,8의 조상이다. 반대로 노드 4,5,6,7,8은 노드 1의 자손이다. 차수 차수(degree)란 어떤 노드의 자식 노드 개수를 의미한다. 트리의 차수는 트리에 있는 노드의 최대 차수 즉, 최대 자식 노드 개수를 의미한다. 리프 노드(leaf node)는 차수가 0인 노드를 의미한다. 즉, 자식이 없는 노드이다. 내부 노드(internal node)는 루트 노드와..
[알고리즘](Python) 백준 10828번 - 스택 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제 주제 스택 시간 / 메모리 제한 0.5초 / 256 MB 정답 비율 37.231% 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. push X: 정수 X를 스택에 넣는 연산 pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. ..
[알고리즘](Python) 백준 10845번 - 큐 문제 https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 주제 큐 시간 / 메모리 제한 0.5 초 / 256 MB 정답 비율 48.970% 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. si..
[휴학 중 코테 부수기] # 1. 리스트 개념과 그림으로 보는 파이썬 코드 구현 참고 자료: 파이썬으로 배우는 자료 구조 핵심 원리(양태환) - 주요 개념 리스트의 개념 리스트와 배열의 차이점 연결 리스트 이중 연결 리스트 원형 링크드 리스트 4.1 연결 리스트 이해하기 리스트(List) 리스트는 목록 형태로 이뤄진 데이터 형식이다. 노드(Node) 이 목록을 이루는 개별 요소를 노드(Node)라고 부른다. 리스트의 길이는 노드의 개수와 같다. 특별히 리스트의 첫 노드를 헤드(Head), 마지막 노드를 테일(Tail)이라고 한다. 리스트의 연산 - Append : 리스트에 노드를 추가 - Insert : 노드 사이에 노드를 삽입 - Remove : 노드를 제거 - GetAt : 특정 위치에 있는 노드를 반환 리스트 vs. 배열 생성하는 시점에 크기를 정해줘야 하는 배열과 달리, 리스..
[알고리즘](C언어) 그래프 알고리즘 1. 그래프 ADT 그래프 ADT 그래프(graph): G = (V,E) 혹은 G(V,E)로 표시 V: 정점(vertex)이라 불리는 노드의 집합 E: 간선(edge)이라 불리는 정점쌍들의 집합 정점과 간선은 원소, 즉 정보를 저장 예 아래 예에서 정점은 공항을 표현하며 공항도시 이름을 저장 간선은 두 공항 사이의 항로를 표현하며 항로의 거리(mile)를 저장 간선에 따른 그래프 유형 방향간선(directed edge) 정점들의 순서쌍 u: 시점(origin) v: 종점(destination) ex: 항공편(flight) 방향그래프(directed graph) 모든 간선이 방향간선인 그래프 n개의 정점으로 구성된 방향 그래프에서 간선이 최대일 경우는 모든 정점이 연결되어 n(n-1)개가 될 때이다. ex..
[알고리즘](C언어) 해싱을 이용한 사전의 해시테이블 구현 사전은 위 그림과 같이 리스트, 트리, 해시테이블로 구현할 수 있다. 그리고 구현 형태에 따라 모든 작업에 있어 필수로 수행되는 탐색 기법 또한 달라진다. 사전을 리스트로 구현할 경우, 무순 사전 ADT와 순서 사전 ADT로 구현할 수 있는데, 무순 사전 ADT를 이용해 구현할 경우 선형탐색으로 탐색을 수행할 수 있다. 순서 사전 ADT를 이용해 구현할 경우 이진탐색으로 탐색을 수행할 수 있다. 사전을 트리로 구현할 경우, 탐색 트리로 구현할 수 있다. 이때 트리탐색으로 탐색을 수행할 수 있다. 탐색 트리는 이진탐색트리, AVL 트리 등으로 세분구분된다. 사전을 해시테이블로 구현할 경우, 해싱으로 탐색을 수행할 수 있는데, 해당 포스트에서는 그 방법에 대해 알아보자. 1. 해시테이블(hash table)..

반응형