[이분 매칭, 난이도 중] 백준 11375번, 열혈강호
이분 매칭 알고리즘이란? 이분 매칭 알고리즘은 선택하는 집단과 선택되는 집단이 있을 때, 두 집단 사이의 매칭 수가 최대가 되도록 하는 것이 목적인 알고리즘이다. 이분 매칭 알고리즘의 기본 원리 사람 A, B와 과일 X, Y, Z가 있는데, 한 사람당 하나의 과일만 먹을 수 있다고 가정하자. 사람 A는 모든 과일을 좋아해서 과일 X, Y, Z 모두를 선호하는 반면, 사람 B는 입맛이 까다로워서 과일 X만 선호한다. 초기 상태에서는 과일 X, Y, Z는 아무에게도 선택되지 않았다. 먼저, A가 선호하는 첫 번째 과일인 X를 매칭한다. 그 다음 B가 선호하는 첫 번째 과일인 X를 매칭하려고 하니 X는 A에 의해 이미 선택되어 있다. 그래서 B는 X를 선택한 A에게 이렇게 묻는다. "A님, 가능하다면 다른 과..
2022. 3. 4.
[DFS, 난이도 중] 프로그래머즈, 쿼드압축 후 개수 세기
전체 영역을 4분할 한뒤 분할 영역 안의 요소가 모두 같을 경우에는 압축하고, 그렇지 않을 경우에는 분할 영역을 다시 4분할해가는 식으로 진행한다. 이 방식으로 모두 압축했을 때 남아있는 0,1의 개수를 계산하면 되는 문제이다. 자세한 설명은 맨 아래 첨부한 코드의 주석에 달아놓았다. dfs함수를 수행하기 전에 전체 영역에 대해 요소가 모두 같은지 여부를 알아내야 한다. 그 이유는 dfs함수에서는 영역을 4분할 하고 계산하기 때문에, 전체 영역을 바로 넣어버리면 전체 영역에 대해 요소가 모두 같더라도 강제로 4분할이 되어 버린다. 이러한 과정이 없다면, [[1,1],[1,1]] 이 입력으로 주어지더라도 출력값은 [0,1]이 아닌 [0,4]가 되어버릴 것이다. 테스트 케이스 16개 모두 통과 #includ..
2020. 10. 19.