위상정렬
-
백준 2252 줄 세우기 | 위상정렬 | C++[백준 알고리즘]/[C++] 2021. 4. 12. 10:34
이번 포스팅은 백준 2252번 줄 세우기입니다. 아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다. www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1≤N≤32,000), M(1≤M≤100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의미이 www.acmicpc.net 기본 알고리즘 위상정렬 Topological Sort 전체 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41..
-
백준 1766 문제집 | C++[백준 알고리즘]/[C++] 2021. 3. 29. 13:50
이번 포스팅은 백준 1766번 문제집입니다. 아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다. www.acmicpc.net/problem/1766 1766번: 문제집 첫째 줄에 문제의 수 N(1 ≤ N ≤ 32,000)과 먼저 푸는 것이 좋은 문제에 대한 정보의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 둘째 줄부터 M개의 줄에 걸쳐 두 정수의 순서쌍 A,B가 빈칸을 사이에 두고 주 www.acmicpc.net 기본 알고리즘 위상정렬 Topological Sort 우선순위 큐 Priority Queue 풀이 문제는 난이도 순서로 출제되어 있다. 즉 1번 문제가 가장 쉬운 문제이고 N번 문제가 가장 어려운 문제가 된다. line 14 priority_queue pq; 오름차순 정렬..
-
백준 1005 ACM Craft | C++[백준 알고리즘]/[C++] 2021. 3. 29. 13:44
이번 포스팅은 백준 1005번 ACM Craft입니다. 아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다. www.acmicpc.net/problem/1005 1005번: ACM Craft 첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N 과 건물간의 건설순서규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부 www.acmicpc.net 기본 알고리즘 위상 정렬 Topological Sort 풀이 최소 시간을 갱신하는 조건 line49 result[next] = max(result[next], result[cur] + time[next]); 정점 next의 최소 건설 시간은 선행 정점이 모두 지어진 시간에 자신의 건물을..
-
백준 2056 작업 | C++[백준 알고리즘]/[C++] 2021. 3. 29. 13:39
이번 포스팅은 백준 2056번 작업입니다. 아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다. www.acmicpc.net/problem/2056 2056번: 작업 수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해 www.acmicpc.net 기본 알고리즘 위상 정렬 Topological Sort 풀이 최소 시간을 갱신하는 조건 line42 result[next] = max(result[next], result[cur] + time[next]); 정점 next의 최소 건설 시간은 선행 정점이 모두 지어진 시간에 자신의 건물을 짓는 시..
-
백준 1516 게임 개발 | C++[백준 알고리즘]/[C++] 2021. 3. 26. 12:51
이번 포스팅은 백준 1516번 게임 개발입니다. 아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다. www.acmicpc.net/problem/1516 1516번: 게임 개발 첫째 줄에 건물의 종류 수 N(1 ≤ N ≤ 500)이 주어진다. 다음 N개의 줄에는 각 건물을 짓는데 걸리는 시간과 그 건물을 짓기 위해 먼저 지어져야 하는 건물들의 번호가 주어진다. 건물의 번호는 1부 www.acmicpc.net 기본 알고리즘 위상 정렬 Topological Sort 풀이 최소 시간을 갱신하는 조건 line56 result[next] = max(result[next], result[cur] + time[next]); 정점 next의 최소 건설 시간은 선행 정점이 모두 지어진 시간에 자신의 건물을 ..
-
백준 14567 선수과목 (Prerequisite) | C++[백준 알고리즘]/[C++] 2021. 3. 23. 10:20
이번 포스팅은 백준 14567번 선수과목 (Prerequisite)입니다. 아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다. www.acmicpc.net/problem/14567 14567번: 선수과목 (Prerequisite) 3개의 과목이 있고, 2번 과목을 이수하기 위해서는 1번 과목을 이수해야 하고, 3번 과목을 이수하기 위해서는 2번 과목을 이수해야 한다. www.acmicpc.net 기본 알고리즘 위상 정렬 (Topological Sort) 풀이 위상 정렬하면서 출력 배열(과목 번호가 인덱스)에 수강 학기 수를 저장한다. 1학기 부터 시작하므로 result 배열을 1로 초기화 한다. q 1 4 6 result[i] 1 1 1 cur = 1 q 1 4 6 2 3 result[i]..
-
2623번 음악프로그램 | Baekjoon BOJ 백준 2623 C++ 코드, 해설, 풀이[백준 알고리즘]/[C++] 2021. 1. 19. 15:00
이번 포스팅은 백준 2623번 음악프로그램입니다. 아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다. www.acmicpc.net/problem/2623 2623번: 음악프로그램 첫째 줄에는 가수의 수 N과 보조 PD의 수 M이 주어진다. 가수는 번호 1, 2,…,N 으로 표시한다. 둘째 줄부터 각 보조 PD가 정한 순서들이 한 줄에 하나씩 나온다. 각 줄의 맨 앞에는 보조 PD가 담당한 www.acmicpc.net 기본 알고리즘 위상 정렬 Topological Sort 참고 line 10 vector v[1002]; 배열을 원소로 하는 벡터 line 16-30 v[index]에는 바로 뒤에 오는 항목만 넣는다. 1 → 4 → 3 v[1]=4, v[4]=3 v[1]={4, 3} 런타임 에러..
-
C++ 위상 정렬 - 연결리스트, 스택[C , C++] 2021. 1. 19. 12:25
코드 출처 C++로 쉽게 풀어쓴 자료구조 11장 class Node { int id; //정점의 id Node* link; //다음 노드의 포인터 public: Node(int i, Node* l = NULL): id(i),link(l) {} int getId() { return id; } Node* getLink() { return link; } }; int vertices[1000]; //정점 배열 Node* adj[1000]; //각 정점의 인접리스트 int inDeg[1000]; //정점의 진입차수 void insertEdge(int u, int v) { adj[u] = new Node(v, adj[u]); } void TopoSort() { //모든 정점의 진입 차수 계산 for (int i =..