본문 바로가기

Algorithm

(28)
위상정렬 https://velog.io/@kimdukbae/%EC%9C%84%EC%83%81-%EC%A0%95%EB%A0%AC-Topological-Sorting [알고리즘] 위상 정렬 (Topological Sorting)정렬 알고리즘의 일종으로, 순서가 정해져 있는 일련의 작업을 차례대로 수행해야 할 때 사용할 수 있는 알고리즘이다.조금 더 이론적인 설명은, 사이클이 없는 방향 그래프의 모든 노드를 '방velog.io위 글에서 너무 정리를 잘 해주셨다. 들어가서 보는 것을 추천한다.진입차수가 0인 노드를 큐에 넣는다.큐가 빌 때까지 다음 과정을 반복한다.1. 큐에서 원소를 꺼내 해당 노드에서 나가는 간선을 그래프에서 제거2. 새롭게 진입차수가 0이 된 노드를 큐에 삽입 위상 정렬을 수행할 수 있는 그래프는 사..
최소 스패닝 트리(Minimum Spanning Tree, MST) 참고 자료 알고리즘 - 크루스칼 알고리즘(Kruskal Algorithm), 최소 신장 트리(MST)##chanhuiseok.github.io🌐 MST란? 최소 스패닝 트리 == 최소 신장 트리 도시들을 최소 비용으로 연결하는 도로망을 만드는 것과 같다.모든 도시를 연결하되, 총 건설 비용을 최소화하는 것이 목표라고 할 수 있다.3개의 도시가 있다고 가정: 1번 도시 - 2번 도시: 비용 1 2번 도시 - 3번 도시: 비용 2 1번 도시 - 3번 도시: 비용 3 특징그래프의 모든 정점을 연결사용된 간선의 가중치 합이 최소사이클을 포함하지 않음정점 n개 → 간선은 반드시 (n-1)개 대표적 알고리즘크루스칼 알고리즘 (Kruskal's Algorithm)간선 중심 접근모든 간선을 가중치 오름차순 정렬가장 ..
[Python] 백준 1003번 피보나치 함수 https://www.acmicpc.net/problem/1003t = int(input())dp = [[1,0], [0,1]]for i in range(2, 41): dp.append([dp[i-1][0] + dp[i-2][0], dp[i-1][1] + dp[i-2][1]])for _ in range(t): test_case = int(input()) print(dp[test_case][0], dp[test_case][1]) fibo(0) = [1, 0] fibo(1) = [0, 1] fibo(2) = [1, 1] fibo(3) = [1, 2] fibo(4) = [2, 3] ... 이런 식으로 fibo(n) = [fibo(n-1)의 0의 개수 + fibo(n-2)의 0의 개수, fibo..
[Python] 백준 2644번 촌수계산 https://www.acmicpc.net/problem/2644from collections import dequen = int(input())p1, p2 = map(int, input().split())m = int(input())family = dict()visited = [0] * (n+1)for _ in range(m): n1, n2 = map(int, input().split()) if n1 not in family: family[n1] = [n2] else: family[n1].append(n2) if n2 not in family: family[n2] = [n1] else: family[n2].append(n1)#..
[Python] 백준 2302번 극장 좌석 https://www.acmicpc.net/problem/2302 문제 해결 시간 : 35분 요새 백준 푸는 게 재밌어지고 있는 중이다. 전에는 그냥 문제만 봐도 스트레스였는데...아무튼 이 문제는 처음 봤을 때 이게 뭐지 싶었다.뭔가 조합으로 구하는 문제인가? 하고 살펴봤지만 번호에서 해당 자리 포함 양옆까지만 되기 때문에 조합으로 구하는 문제는 아닌 거 같았다.1234이렇게 있을 때 1은 1, 22는 1,2,33은 2,3,44는 3,4이런 식으로 앉을 수 있다는 게 이 문제의 내용이다. 여기에 더해 VIP 좌석이라는 개념이 있는데 VIP는 지정석으로 해당 자리에만 앉을 수 있다.말 그대로 고정 좌석이었다. 예시를 살펴보면 9개의 좌석이 있고 4와 7번의 자리가 VIP 좌석으로 고정되어 있다.이때 4와..
[Python] 백준 14503 로봇청소기 https://www.acmicpc.net/problem/14503전에 풀어보려다가 한 번 실패하고 오랜만에 다시 풀어보는 문제였다. 이게 처음에 문제를 봤을 때는 문항이 다음과 같이 되어 있어서 왜 숫자가 저런 식으로 되어 있나 하고 의아했는데 2번 다음에 나오는 123의 경우 2-1, 2-2, 2-3이고 3번 다음에 나오는 123의 경우 3-1, 3-2, 3-3이라고 생각하면 된다.from collections import dequen, m = map(int, input().split())r, c, d = map(int, input().split())room = []for i in range(n): room.append(list(map(int, input().split())))# 북 동 남 서d..