diff --git a/src/week3/BOJ15686/BOJ15686_V1.cpp b/src/week3/BOJ15686/BOJ15686_V1.cpp new file mode 100644 index 0000000..0fd49b3 --- /dev/null +++ b/src/week3/BOJ15686/BOJ15686_V1.cpp @@ -0,0 +1,88 @@ +#include +using namespace std; +vector> house; +vector> chicken; +vector> visited; +int N,M; +int chicken_cnt, house_cnt; +int min_cnt = INT_MAX; + + + +int calculate(int house_idx, int chicken_idx) { + int y = house[house_idx].first - chicken[chicken_idx].first; + int x = house[house_idx].second - chicken[chicken_idx].second; + + if (y < 0) + y *= -1; + if (x < 0) + x *= -1; + + return y + x; +} + +void dfs(int idx, int distance, vector live_chicken) { + if (idx > house_cnt-1) { + min_cnt = min(min_cnt, distance); + return; + } + + for (int i=0; i b, int k){ + if(b.size() == k){ + dfs(0, 0, b); + return; + } + for (int i=start+1; i> N >> M; + + for (int i = 0; i < N; i++) { + for (int j = 0; j < N; j++) { + int temp; + cin >> temp; + if (temp == 1) { + house.push_back(make_pair(i, j)); + } else if (temp == 2) { + chicken.push_back(make_pair(i, j)); + } + } + } + + chicken_cnt = chicken.size(); + house_cnt = house.size(); + + for (int i = 0; i < house_cnt; i++) { + visited.push_back(vector()); + for (int j = 0; j < chicken_cnt; j++) { + visited[i].push_back(0); + } + } + vector live_chicken; + combi(-1, live_chicken, M); + + cout << min_cnt << endl; + + return 0; +} \ No newline at end of file