BOJ_G5_15686
๐ [G5_15686] ์นํจ ๋ฐฐ๋ฌ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Main {
static class Dot{
int x;
int y;
public Dot(int x, int y) {
this.x = x;
this.y = y;
}
}
static int N,M;
static int[][] map;
static ArrayList<Dot> mList;
static ArrayList<Dot> cList;
static int min = Integer.MAX_VALUE;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
map = new int[N][N];
cList = new ArrayList<>();
mList = new ArrayList<>();
for(int i=0; i<N; i++){
st = new StringTokenizer(br.readLine()," ");
for(int j=0; j<N; j++){
map[i][j] = Integer.parseInt(st.nextToken());
// ์นํจ์ง์ธ ๊ฒฝ์ฐ ๋ฆฌ์คํธ์ ๋ด๊ธฐ
if(map[i][j] == 2) cList.add(new Dot(j,i));
}
}
// ์กฐํฉ
Comb(0,0);
System.out.println(min);
}
// ์กฐํฉ
static void Comb(int idx, int start){
// ๊ธฐ์ ์กฐ๊ฑด
if(idx == M){
// ์ต์ ๋์ ์นํจ ๊ฑฐ๋ฆฌ ๊ตฌํ๊ธฐ
min = Math.min(chLength(), min);
return;
}
for(int i=start; i<cList.size(); i++){
// M๊ฐ ์ ํ๋ ๋ฆฌ์คํธ์ ์ขํ ์ถ๊ฐํ๊ธฐ
mList.add(cList.get(i));
Comb(idx+1, i+1);
// ๊ธฐ์ ์กฐ๊ฑด
mList.remove(mList.size()-1);
}
}
// ์ต์ ๋์ ์นํจ ๊ฑฐ๋ฆฌ ๊ตฌํ๊ธฐ
static int chLength(){
// ๋์ ์นํจ ๊ฑฐ๋ฆฌ
int sum = 0;
// ์ ์ฒด ๋๋ฉด์ 1์ผ ๋ ๊ณ์ฐํด์ฃผ๊ธฐ
for(int i=0; i<N; i++){
for(int j=0; j<N; j++){
// ๋ง์ฝ ์ง์ธ ๊ฒฝ์ฐ
if(map[i][j] == 1){
// ๊ฐ์ฅ ์งง์ ์นํจ ๊ฑฐ๋ฆฌ
int chickenLength = Integer.MAX_VALUE;
// M ๋งํผ ๋๋ฉด์ ๊ธธ์ด ์ฒดํฌ
for(int z=0;z<mList.size();z++){
// ์นํจ์ง ์ขํ
int x = mList.get(z).x;
int y = mList.get(z).y;
// ์ขํ ๊ณ์ฐ
int length = Math.abs(x-j)+ Math.abs(y-i);
// ์ต์๊ฐ ๊ตฌํ๊ธฐ
chickenLength = Math.min(chickenLength, length);
}
// ๊ฐ์ฅ ์งง์ ์นํจ ๊ฑฐ๋ฆฌ ๋ํ๊ธฐ
sum += chickenLength;
}
}
}
return sum;
}
}
๐ค ๋์ ์๊ฐ
๊ตฌํ ๋ฌธ์ ์ด๋ค.
์ด ๋ฌธ์ ์ ํฌ์ธํธ๋ ์กฐํฉ์ผ๋ก M๊ฐ์ ์นํจ์ง์ ์ ํ๊ณ ๊ฐ ์ง์์๋ถํฐ M๊ฐ์ ์นํจ์ง๊น์ง์ ์นํจ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ๋ค ๋์์ ์นํจ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด์ฃผ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ต๋ M๊ฐ์ ์นํจ์ง์ด๋ผ์ 1๋ถํฐ M๊ฐ ๋ค ๊ตฌํด์ผํ๋ ๊ฒ์ผ๋ก ์ฐฉ๊ฐํ ์ ์๋๋ฐ ์ด์ฐจํผ ์นํจ์ง์ด ๋ง์ผ๋ฉด ๋ง์ ์๋ก ๋์์ ์นํจ๊ฑฐ๋ฆฌ๋ ๋ ์งง์์ง๊ธฐ ๋๋ฌธ์ ๋ฌด์กฐ๊ฑด M๊ฐ์ ์น๊ธด์ง์ ์นํจ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋๊ฒ ๋ฒ ์คํธ๋ค.
์ค๋๋ง์ ์กฐํฉ์ ์ด์ฉํ๋๊ฑฐ๋ผ ์ข ํค๋งธ์ง๋ง โฆ ์์๋๋ก ํด๊ฒฐํด ๋๊ฐ๋ฉด ํด๊ฒฐํ ์ ์๋ค.