문제 링크
- https://www.acmicpc.net/problem/1574
알고리즘
- 이분 매칭
풀이
이 문제는 ‘열혈강호’나 ‘축사배정’과 같은 문제와 달리 이분 매칭에 필요한 정점들을 직접 만들어야 한다. 처음엔 정점을 어떻게 구현하는지 몰라서 여러 번의 실패를 겪어야만 했다.
위의 블로그 글을 본 후에야 방법을 알게 되었는데, 사실 저 방법조차도 이해하는 데에 오랜 시간이 걸렸다. 열과 행 기준으로 그룹을 구성하고 숫자를 매기는 작업을 한 번씩 실시해야 한다. 무슨 말이냐면 특정 열 혹은 행에서 룩이 얼마나 놓일 수 있는지 계산하는 작업이다.
예를 들어 행을 기준으로 이 작업을 실시한다면, 1번 행에서는 빈칸이 있는 열을 제외하고는 모두 말을 놓을 수 있기에 1이라는 숫자를 넘버링 해주면 된다.
유사 문제로 아래의 두 문제가 있는데, 이 문제가 다른 룩 시리즈 문제와 다른 점은 보드 위에 벽이 존재하지 않고 단지 룩을 놓을 수 없는 빈칸만 있다는 것이다.
전체 코드
1 |
|