Algorithm
다익스트라 알고리즘 파이썬으로 구현하기 - 최단경로
다익스트라 알고리즘 파이썬으로 구현하기 - 최단경로
2018.12.17https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 다익스트라 알고리즘을 사용해 최단거리를 구하는 문제입니다. 별다른 고민 없이 알고리즘 그대로 파이썬으로 옮겨 적으면 쉽게 통과할 것 같지만, 한 가지 함정이 있습니다. 바로 빠른 IO 처리입니다. 파이썬에서의 빠른 입출력 구현은 input 대신 sys.stdin.readline을 사용하는 것인데, 입출력이 큰 경우 시간 최적화를 위해 습관화하는 것이 좋습니다...
유향 그래프에서 BFS, DP 사용하기 - ACM Craft
유향 그래프에서 BFS, DP 사용하기 - ACM Craft
2018.11.28https://www.acmicpc.net/problem/1005 1005번: ACM Craft 첫째 줄에는 테스트케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다. 첫째 줄에 건물의 개수 N과 건물간의 건설순서 규칙의 총 개수 K이 주어진다. (건물의 번호는 1번부 www.acmicpc.net 유향 그래프에서 인접 노드의 비용을 고려해 최대 소요 시간을 구하는 문제입니다. 문제 분류는 위상정렬로 되어있지만, 더 자주 쓰이는 BFS와 DP로 해결했습니다. BFS (Breadth First Search) 전형적인 bfs 알고리즘 형태로 풀 수 있습니다. indegree가 0인 노드에서 최댓값을 체크하면 됩니다. #include #include #include #include #incl..
LIS 알고리즘 사용하기 - 가장 긴 바이토닉 부분 수열
LIS 알고리즘 사용하기 - 가장 긴 바이토닉 부분 수열
2018.11.28https://www.acmicpc.net/problem/11054 11054번: 가장 긴 바이토닉 부분 수열 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ Ai ≤ 1,000) www.acmicpc.net 이 문제는 LIS 알고리즘을 사용하기 때문에 다이나믹 프로그래밍으로 분류되어 있습니다. 풀이 과정은 다음과 같습니다. 왼쪽부터 오른쪽 방향으로 LIS 배열 계산 오른쪽부터 왼쪽 방향으로 LIS 배열 계산 각 포지션에서 두 배열을 더한 값에서 -1 최댓값 반환 #include #include using namespace std; const int MAX_N = 1000; int n; int arr[MAX_N]; int..