위상정렬 신장트리와 위상정렬 신장트리 : 그래프에서 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프 👉 신장 트리가 아닌 부분 그래프를 보면, 1번 노드는 연결되어 있지 않고, 사이클이 존재하기 때문에 신장 트리라고 할 수 없다. 👉 즉, 모든 노드가 서로 연결되어 이동이 가능하도록 만들되, 최소한의 비용으로 전체 신장 트리를 구성하고자 하는 문제 ◾ 사이클이 발생하지 않는 경우 최소 신장 트리에 포함시킨다.... 신장트리자료구조알고리즘코딩테스트코테이코테위상정렬신장트리 [WEEK03] DAY24 & 다익스트라 / DFS / BFS / 위상정렬 패턴 위상정렬 다익스트라 경로를 여러군데 거친 최종 최소 거리를 구해야 할 때 사용 BFS BFS로 풀이시 : 큐 사용 할 때 대부분 visit / need_visit(visited) 두 개 리스트를 만들어서 팝하고 체크하는 식으로 시작하는 듯 내 근처에 있는 애들 먼저 순차적으로 다 탐색한다 BFS / DFS 다익스트라 vs 위상정렬 다익스트라 / DFS / BFS 패턴 위상정렬 패턴 Team ... BFSDFS위상정렬다익스트라(Dijkstra)알고리즘패턴BFS 백준 알고리즘 14567번 : 선수과목 (Prerequisite) 올해 Z대학 컴퓨터공학부에 새로 입학한 민욱이는 학부에 개설된 모든 전공과목을 듣고 졸업하려는 원대한 목표를 세웠다. 어떤 과목들은 선수과목이 있어 해당되는 모든 과목을 먼저 이수해야만 해당 과목을 이수할 수 있게 되어 있다. 공학인증을 포기할 수 없는 불쌍한 민욱이는 선수과목 조건을 반드시 지켜야만 한다. 민욱이는 선수과목 조건을 지킬 경우 각각의 전공과목을 언제 이수할 수 있는지 궁금해졌... 백준 알고리즘위상정렬백준 알고리즘 [알고리즘] DAG, 위상 정렬(Topological Sort) 즉 위와 같은 그래프가 있을 때, 5 번 정점을 탐색하기 위해서는 3 번 정점과 4 번 정점의 탐색이 선행되어야 합니다. 진입차수가 없는 1 번 정점으로 부터 탐색을 시작하여 각 정점의 진입차수가 0 이 되었을 때 위와 같은 사이클이 존재하는 그래프에서는 진입차수가 0이 될 수 없는 구간이 존재합니다. 각 정점을 방문하면서 진입차수가 0이 된 정점을 큐에 삽입합니다. 초기 DAG에서는 반드시... 위상정렬알고리즘알고리즘 백준 1432 그래프수정/ python/ 위상정렬 예제 입력: 예제 출력: 답이 여러 개일 경우에는 사전 순으로 제일 앞서는 것을 출력한다. 따라서, 최소힙을 사용하여 작은 것부터 뽑아줘야 한다고 생각했다. 이 과정에 대한 코드 : 백준의 모든 예제를 통과하지만, 답안을 제출하면 오답이다. heap = [1,2] now = heapq.heappop(heap) & anw.append(now) heap = [2] 만약 낮췄는데 degree 가 ... 파이썬위상정렬위상정렬 백준 1005 ACM Craft 링크 : ◆ 위상 정렬을 통해 특정 건물 x를 짓기 위한 선행건물 루트중에 가장 시간이 오래걸리는 루트의 시간을 totaltime[x] 에 넣어줌. 해당 건물을 지을 수 있게되면 (indegree[x] 값이 0이되면) 해당 건물을 짓는 시간(times[x])을 더해줌 없었음 예전에 풀어봤던 유형의 문제라 무난하게 해결했다.... 위상정렬알고리즘알고리즘 백준 14567번 선수과목 파이썬 위상정렬을 이용하여 풀이를 했다. 위상정렬이란 앞에 진입하는 간선노드가 없는경우 실행을 하는 방식이다. res에 연결된 간선노드개수를 삽입을 해주고 반복문을 통해서 진입하는 간선노드가 없는경우 큐에 삽입을 노드 번호 , 학기를 삽입을 해준다 그리고 해당 노드랑 연결되어 있는 노드들을 반복문을 사용해서 res , 간선의 개수를 1개씩 없애주고 만약에 없을경우 큐에 삽입 , 그리고 cur에 수업... 파이썬알고리즘골드위상정렬골드 백준 2252 | 줄 세우기 (위상정렬) 문제 출처 : 문제 n명의 학생들을 키 순서대로 줄 세운다 각 학생의 키를 직접 잴 수 없어서 두 학생의 키를 비교하는 방법 사용 모든 학생들을 다 비교하지 못하고 일부 학생들의 키만을 비교 일부 학생들의 키를 비교한 결과 주어지면, 줄 세우는 프로그램 작성 입력 n : 학생 수 ( 1 <= n <= 32,000 ) m : 키를 비교한 횟수 ( 1 <= m <= 100,000 ) 키를 비교한... Topology Sort위상정렬Topology Sort 백준 1948번: 임계경로 바로 이전에 를 풀어서 역추적 BFS 아이디어가 쉽게 떠올랐다. 역추적 BFS 과정에서 정점 방문 여부를 기록하는 이유는 이후의 중복 카운팅을 막기 위해서이다. 그렇다고 방문한 정점으로의 간선을 카운팅하지 않으면 안 된다. 덕분에 30분 시간 낭비했다.... 파이썬ps위상정렬BFSBFS [알고리즘] 위상정렬 뿌시기 동빈나님의 을 보고 정리한 내용입니다. 순서가 정해진 작업을 차례대로 수행할때 그 순서를 알기 위해 사용하는 알고리즘 여러개의 답이 존재할 수 있음 DAG에만 적용이 가능하다. -> DAG란? Directed Acyclic Graph - 방향이 있고 사이클이 없는 그래프 -> 시작점이 있어야 하므로 사이클이 발생하면 위상정렬 수행 x queue를 사용하는 방법과 stack을 사용하는 방법이 ... 위상정렬알고리즘알고리즘
신장트리와 위상정렬 신장트리 : 그래프에서 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프 👉 신장 트리가 아닌 부분 그래프를 보면, 1번 노드는 연결되어 있지 않고, 사이클이 존재하기 때문에 신장 트리라고 할 수 없다. 👉 즉, 모든 노드가 서로 연결되어 이동이 가능하도록 만들되, 최소한의 비용으로 전체 신장 트리를 구성하고자 하는 문제 ◾ 사이클이 발생하지 않는 경우 최소 신장 트리에 포함시킨다.... 신장트리자료구조알고리즘코딩테스트코테이코테위상정렬신장트리 [WEEK03] DAY24 & 다익스트라 / DFS / BFS / 위상정렬 패턴 위상정렬 다익스트라 경로를 여러군데 거친 최종 최소 거리를 구해야 할 때 사용 BFS BFS로 풀이시 : 큐 사용 할 때 대부분 visit / need_visit(visited) 두 개 리스트를 만들어서 팝하고 체크하는 식으로 시작하는 듯 내 근처에 있는 애들 먼저 순차적으로 다 탐색한다 BFS / DFS 다익스트라 vs 위상정렬 다익스트라 / DFS / BFS 패턴 위상정렬 패턴 Team ... BFSDFS위상정렬다익스트라(Dijkstra)알고리즘패턴BFS 백준 알고리즘 14567번 : 선수과목 (Prerequisite) 올해 Z대학 컴퓨터공학부에 새로 입학한 민욱이는 학부에 개설된 모든 전공과목을 듣고 졸업하려는 원대한 목표를 세웠다. 어떤 과목들은 선수과목이 있어 해당되는 모든 과목을 먼저 이수해야만 해당 과목을 이수할 수 있게 되어 있다. 공학인증을 포기할 수 없는 불쌍한 민욱이는 선수과목 조건을 반드시 지켜야만 한다. 민욱이는 선수과목 조건을 지킬 경우 각각의 전공과목을 언제 이수할 수 있는지 궁금해졌... 백준 알고리즘위상정렬백준 알고리즘 [알고리즘] DAG, 위상 정렬(Topological Sort) 즉 위와 같은 그래프가 있을 때, 5 번 정점을 탐색하기 위해서는 3 번 정점과 4 번 정점의 탐색이 선행되어야 합니다. 진입차수가 없는 1 번 정점으로 부터 탐색을 시작하여 각 정점의 진입차수가 0 이 되었을 때 위와 같은 사이클이 존재하는 그래프에서는 진입차수가 0이 될 수 없는 구간이 존재합니다. 각 정점을 방문하면서 진입차수가 0이 된 정점을 큐에 삽입합니다. 초기 DAG에서는 반드시... 위상정렬알고리즘알고리즘 백준 1432 그래프수정/ python/ 위상정렬 예제 입력: 예제 출력: 답이 여러 개일 경우에는 사전 순으로 제일 앞서는 것을 출력한다. 따라서, 최소힙을 사용하여 작은 것부터 뽑아줘야 한다고 생각했다. 이 과정에 대한 코드 : 백준의 모든 예제를 통과하지만, 답안을 제출하면 오답이다. heap = [1,2] now = heapq.heappop(heap) & anw.append(now) heap = [2] 만약 낮췄는데 degree 가 ... 파이썬위상정렬위상정렬 백준 1005 ACM Craft 링크 : ◆ 위상 정렬을 통해 특정 건물 x를 짓기 위한 선행건물 루트중에 가장 시간이 오래걸리는 루트의 시간을 totaltime[x] 에 넣어줌. 해당 건물을 지을 수 있게되면 (indegree[x] 값이 0이되면) 해당 건물을 짓는 시간(times[x])을 더해줌 없었음 예전에 풀어봤던 유형의 문제라 무난하게 해결했다.... 위상정렬알고리즘알고리즘 백준 14567번 선수과목 파이썬 위상정렬을 이용하여 풀이를 했다. 위상정렬이란 앞에 진입하는 간선노드가 없는경우 실행을 하는 방식이다. res에 연결된 간선노드개수를 삽입을 해주고 반복문을 통해서 진입하는 간선노드가 없는경우 큐에 삽입을 노드 번호 , 학기를 삽입을 해준다 그리고 해당 노드랑 연결되어 있는 노드들을 반복문을 사용해서 res , 간선의 개수를 1개씩 없애주고 만약에 없을경우 큐에 삽입 , 그리고 cur에 수업... 파이썬알고리즘골드위상정렬골드 백준 2252 | 줄 세우기 (위상정렬) 문제 출처 : 문제 n명의 학생들을 키 순서대로 줄 세운다 각 학생의 키를 직접 잴 수 없어서 두 학생의 키를 비교하는 방법 사용 모든 학생들을 다 비교하지 못하고 일부 학생들의 키만을 비교 일부 학생들의 키를 비교한 결과 주어지면, 줄 세우는 프로그램 작성 입력 n : 학생 수 ( 1 <= n <= 32,000 ) m : 키를 비교한 횟수 ( 1 <= m <= 100,000 ) 키를 비교한... Topology Sort위상정렬Topology Sort 백준 1948번: 임계경로 바로 이전에 를 풀어서 역추적 BFS 아이디어가 쉽게 떠올랐다. 역추적 BFS 과정에서 정점 방문 여부를 기록하는 이유는 이후의 중복 카운팅을 막기 위해서이다. 그렇다고 방문한 정점으로의 간선을 카운팅하지 않으면 안 된다. 덕분에 30분 시간 낭비했다.... 파이썬ps위상정렬BFSBFS [알고리즘] 위상정렬 뿌시기 동빈나님의 을 보고 정리한 내용입니다. 순서가 정해진 작업을 차례대로 수행할때 그 순서를 알기 위해 사용하는 알고리즘 여러개의 답이 존재할 수 있음 DAG에만 적용이 가능하다. -> DAG란? Directed Acyclic Graph - 방향이 있고 사이클이 없는 그래프 -> 시작점이 있어야 하므로 사이클이 발생하면 위상정렬 수행 x queue를 사용하는 방법과 stack을 사용하는 방법이 ... 위상정렬알고리즘알고리즘