[Baekjoon] 18290_NM๊ณผ K (1)
๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/18290)
< NM๊ณผ K(1) >
๋ฌธ์ ํ์ด
๊ตฌํ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ค ๊ตฌํ๋ฉฐ ์ต๋๊ฐ์ ๊ตฌํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _18290_ { // NM๊ณผ K (1)
static int arr[][], result;
static boolean visited[][];
static int dx[] = { -1, 1, 0, 0 };
static int dy[] = { 0, 0, -1, 1 };
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
arr = new int[n][m];
visited = new boolean[n][m];
result = Integer.MIN_VALUE;
for (int i = 0; i < n; i++) {
st = new StringTokenizer(bf.readLine());
for (int j = 0; j < m; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
visited[i][j] = true;
search(k - 1, arr[i][j]);
visited[i][j] = false;
}
}
System.out.println(result);
}
private static void search(int k, int sum) {
if (k == 0) {
result = Math.max(result, sum);
return;
}
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[0].length; j++) {
if (visited[i][j]) {
continue;
}
boolean flag=false;
for (int l = 0; l < 4; l++) {
int a = i + dx[l];
int b = j + dy[l];
if (a >= 0 && a < arr.length && b >= 0 && b < arr[0].length) {
if (visited[a][b]) {
flag=true;
break;
}
}
}
if (!flag) {
visited[i][j] = true;
search(k - 1, sum + arr[i][j]);
visited[i][j] = false;
}
}
}
}
}
๋ณ์)
n, m, k : ๊ฒฉ์ํ ํฌ๊ธฐ, ์ ํํ ๊ฐ์
arr : ๊ฒฉ์ํ ์ ๋ณด
visited : ์ ํ ์ฌ๋ถ
result : ์ต๋๊ฐ
n, m , k๊ฐ์ ์ ๋ ฅ๋ฐ๋๋ค. ๊ฒฉ์ํ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ arr์ ์ ์ฅํ๋ค. ๊ฒฉ์ํ์ ์ ์ฒด ํ์ํ๋ฉด์ ํ๋๋ฅผ ์ ํํ ํ search ํจ์๋ฅผ ํธ์ถํ๋ค. ํจ์ ํธ์ถ์ด ์ข ๋ฃ๋๋ฉด ๋ค์ ์ ํ์ ์ํด ์ ํ ํ์๋ฅผ ํด์ ํ๋ค.
์ต์ข ์ต๋๊ฐ์ธ result๋ฅผ ์ถ๋ ฅํ๋ค.
search(๋จ์ ์ ํ ์, ํฉ)
์ ํ์ ๋ค ํ๋ค๋ฉด ์ต๋๊ฐ์ ์ ๋ฐ์ดํธํ ํ ์ข ๋ฃํ๋ค.
๊ฒฉ์ํ์ ์ ์ฒด ํ์ํ๋ฉด์ ์ด๋ฏธ ์ ํ๋ ๊ณณ์ด๋ผ๋ฉด ๋ค์ ํ์์ ํ๋ค. ์ ํ๋ ๊ณณ์ด ์๋๋ผ๋ฉด ์ํ์ข์ฐ๋ฅผ ์ดํด๋ณด๋ฉฐ ์ ํ๋ ๊ณณ์ด ์๋์ง ํ๋จํ๋ค. ์ ํ๋ ๊ณณ์ด ์๋ค๋ฉด ๊ทธ ์นธ์ ์ ํํ ์ ์์ผ๋ฏ๋ก ๋ค์ ํ์์ ํ๋ค. ์ ํ๋ ๊ณณ์ด ์๋ค๋ฉด ๊ทธ ์นธ์ ์ ํํ ํ search ํจ์๋ฅผ ํธ์ถํ๋ค. ํธ์ถ์ด ๋๋๋ฉด ๋ค์ ํ์์ ์ํด ์ ํ์ ํด์ ํ๋ค.
