문제: https://www.acmicpc.net/problem/15683
시험에서는 참조값 초기화에서 버벅거려서 DFS까지 다 구현해놓고 에러를 찾다가 제시간에 제출하지 못했다 ....또륵.,.
소 잃고 외양간이라도 고쳐본다...
백준 사이트에 올린 소스코드에는 주석이 달려있으니 코드보고 이해가 안간다면 주석을 풀어가면서 실행해보면 이해가 빠를 거에요!
백준 사이트에 제출한 소스 코드 : https://www.acmicpc.net/source/8390315
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
static LinkedList cctv = new LinkedList<>();
static int min;
static int col;
static int row;
static int [][] map;
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
col = scan.nextInt();
row = scan.nextInt();
min = col * row;
map = new int[col][row];
boolean [][] chk_map = new boolean[col][row];
for(int i = 0 ; i < col ; i++) {
for(int j = 0 ; j < row; j ++) {
map[i][j] = scan.nextInt();
if(map[i][j] > 0 && map[i][j] < 6) {
cctv.add(new Node(map[i][j],i,j));
}
if(map[i][j] ==6){
chk_map[i][j] = true;
}
}
}
search(0,chk_map);
System.out.println(min);
scan.close();
}
public static void search(int start, boolean[][] arr) {
boolean[][] resArr = new boolean[col][row];
if (start >= cctv.size() ) {
int count = count(arr);
if(min > count) {
min = count;
}
return ;
}
Node n = cctv.get(start);
switch (n.value) {
case 1:
// System.out.println("type : " + n.value);
for(int i = 0; i < 4; i++) {
for(int z = 0 ; z < col ; z++) {
for( int j = 0 ; j = 0 ; i--) {
if(map[i][node.row] == 6) {
break;
}
arr[i][node.row] = true;
}
break;
case 1 :
// System.out.println("하");
for(int i = node.col ; i < col ; i++) {
if(map[i][node.row] == 6) {
break;
}
arr[i][node.row] = true;
}
break;
case 2 :
// System.out.println("좌");
for(int i = node.row ; i >= 0 ; i--) {
if(map[node.col][i] == 6) {
break;
}
arr[node.col][i] = true;
}
break;
case 3 :
// System.out.println("우");
for(int i = node.row ; i < row; i++) {
if(map[node.col][i] == 6) {
break;
}
arr[node.col][i] = true;
}
break;
}
return arr;
}
static class Node {
int value;
int col;
int row;
public Node(int v, int c, int r) {
value = v ;
col = c;
row = r;
}
}
}
'알고리즘 > 심심풀이 문제풀기' 카테고리의 다른 글
[심심풀이 백준문제풀기] 1874번 스택 수열 (파이썬3) (0) | 2018.09.04 |
---|---|
[심심풀이 백준문제풀기] 10430번 나머지 (파이썬3) (0) | 2018.09.04 |
[심심풀이 백준문제풀기] 2606번 바이러스 (0) | 2018.04.13 |
[심심풀이 백준문제풀기] 9012번 괄호 (0) | 2018.04.10 |
[심심풀이 백준문제풀기] 10828번 스택 (0) | 2018.04.10 |