본문 바로가기

위상정렬3

[Java] SWEA 1267번 작업순서 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 위상정렬을 사용하여 해결했습니다. 코드 import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = 10; StringBuilder sb = new StringBuilder(); for (int tc = 1; tc 2021. 5. 30.
[Java] 위상정렬 위상 정렬은 특정 수강과목에서 선수과목이 있을 경우 어떤 순서로 들어야 하는지 순서를 쉽게 찾아낼 수 있는 알고리즘입니다. 이때, 위상 정렬을 위해서는 그래프는 방향이 있어야 하고 사이클이 없는 DAG(Directed Acyclic Graph) 여야만 합니다. 위상 정렬 방법(Queue 사용) 1. 진입 차수 즉, 특정 노드로 들어오는 간선의 개수를 알아내기 위해 in 배열의 크기를 정점의 개수만큼 만듭니다. 2. 특정 노드로 들어오는 간선이 있을 때마다 in 배열의 크기를 +1 해줍니다. ex) 예를 들어, 위 이미지와 같은 DAG가 있다면 진입 차수는 1 2 3 4 진입 차수 0 1 0 3 와 같이 됩니다. 3. 큐를 만들고 진입 차수가 0인 노드를 전부 큐에 삽입합니다. 4. 큐에 아무것도 남지 않.. 2021. 5. 11.
[Java] BOJ 2623번 음악프로그램 2623번: 음악프로그램 첫째 줄에는 가수의 수 N과 보조 PD의 수 M이 주어진다. 가수는 번호 1, 2,…,N 으로 표시한다. 둘째 줄부터 각 보조 PD가 정한 순서들이 한 줄에 하나씩 나온다. 각 줄의 맨 앞에는 보조 PD가 담당한 www.acmicpc.net 풀이 위상정렬을 사용하여 해결했습니다. 코드 import java.io.*; import java.util.*; public class Main { public static int N, M; public static int[] in; public static int[][] adj; public static void main(String[] args) throws IOException { BufferedReader br = new Buffere.. 2021. 4. 23.