viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322d30c9339b45b2fd7c64031d0d2a9afb7906510d1c11c97125a83760e771ff5c4e5b12497b5153b7c72127f337


viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73dec84fa11d0283195504478ca9b7677dc322d30c9339b45b2fd7c64031d0d2a9afb7906510d1c11c97125a83760e771ff5c4e5a19492d013754ffedcd33df



집을 (1, 2)라고 한걸로봐서 좌표는 1부터 시작이지만

거리를 재는거라서 0부터해도 상관없다


예제를 예로들면


6개의 피자집이 있고

이중에 네개의 피자집을 뽑아내는

6C4의 조합문제다


2중포문으로 행우선으로 입력받은 행렬을 탐색하면서

하우스와 피자집의 좌표를 리스트에 넣어두고

답을 넣을 res변수를 글로벌로 만든다


재귀가 도는 상태트리를 생각해보면

처음에 0 1 2 3 4 5 피자집을 모두 탐색하고

0이 선택되면 1 2 3 4 5

1이 선택되면 2 3 4 5

선택된 피자집의 길이가 M과같을때까지

DFS로 4개의 피자집을 뽑아나간다


이렇게 뽑고나면 6C4니까 15개의 피자집이 리스트에 담겨올텐데

하나의 피자집 리스트가 뽑힐때 마다

도시의 최소피자배달거리를 뽑아서 출력하면된다


집의 갯수와 뽑은 피자집의 인덱스만큼 포문을 돌게하고

집이 하나 선택되면 집의 좌표를 정하고

각 집과 피자집의 피자배달거리의 절대값을 만들어서

더한 값들을 res에 비교해서 도시의 피자배달거리를 갱신하면서

최소값을 넣는다


꿈★은 이루어진다

내일채움공제 되는 중소기업 가자 화이팅!