
[Baekjoon Online Judge] 백준 6086번 최대 유량
(Python)
(글쓴날 : 2020.07.11)
* Baekjoon Online Judge, 백준 6086번 문제 Python 언어 풀이입니다.
* 소스 코드의 저작권은 글쓴이에게 있습니다.
백준 6086번 최대 유량
1) 문제
문제 링크 : https://www.acmicpc.net/problem/6086
6086번: 최대 유량
문제 농사꾼 존은 소들이 충분한 물을 마시길 원했다. 그래서 농장에서 우물에서 외양간을 잇는 N개의 배수관의 지도를 만들기로 했다. 존은 아주 다양한 크기의 배수관들이 완전히 우연한 방법
www.acmicpc.net
2) 풀이 과정
* 시간 복잡도 : O(VE²)
정점 간에 흐를 수 있는 최대 용량들이 표시된 파이프 그래프가 주어질 때 정점 "A"에서 정점 "Z"까지의 최대 유량을 출력하는 문제입니다.
저의 경우, 에드몬드 카프 알고리즘을 적용하였고, Python을 사용했습니다.
이름 그대로 최대 유량을 구하는 문제이기 때문에 Network Flow 분야임을 바로 알 수 있으며,
우선, 용량과 유량을 기록할 리스트와 연결된 정점들을 저장할 인접 리스트를 구현했습니다.
(용량 초기화 시 정점 간 파이프가 여러 개일 수 있으므로 +가 아닌 +=을 사용했습니다.)
그 뒤, 에드몬드 카프 알고리즘을 적용해 흐를 수 있는 모든 경로의 남은 최소 용량을 구해가며 유량 리스트를 갱신하였고, BFS를 실시했을 때 더 이상 sink 정점에 갈 수 있는 경로가 없을 때의 흘러간 총 유량을 구해 문제를 해결했습니다.
(문제에서 source 정점은 "A", sink 정점은 "Z"입니다.)
3) 코드
* Python 코드
'Deprecated' 카테고리의 다른 글
[Baekjoon Online Judge] 백준 14725번 개미굴(Python) (0) | 2020.07.10 |
---|---|
[programmers] 프로그래머스 괄호 변환(Python) (0) | 2020.06.19 |
[programmers] 프로그래머스 소수 찾기 Level 2(Python) (0) | 2020.06.19 |
[programmers] 프로그래머스 조이스틱(Python) (0) | 2020.06.19 |
[programmers] 프로그래머스 가장 큰 수(Python) (0) | 2020.06.19 |