삐까냥의 파도타기

2638번) 치즈 본문

코딩/백준 알고리즘

2638번) 치즈

금손형아 2018. 4. 11. 23:18

문제 출처 : https://www.acmicpc.net/problem/2638



코딩 퀴즈만 너무해서 그런지, 힘들어요.

머리도 안돌아가네요.



2018년 4월 11일 - 약간 다듬은 코드 (소요시간 43분)


import java.util.Scanner;


public class Q2638 {


static int ySize, xSize;

static int[][] map, mapClone;

static boolean isContinue = true;

static int[]

moveY = {-1, 0, 1, 0},

moveX = {0, 1, 0, -1};

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

ySize = sc.nextInt();

xSize = sc.nextInt();

map = new int[ySize][xSize];

for (int i = 0; i < ySize; i++) {

for (int j = 0; j < xSize; j++) {

int value = sc.nextInt();

if (value == 1) {

map[i][j] = value;

}

}

}

int time = 0;

while (isContinue) {

isContinue = false;

//0. 맵 복사

copyMap();


//1. 플러딩,

checkMap(0, 0);


//2. 사라질 치즈 계산하고 지우기

searchCheese();

time += 1;

}

System.out.println(time);

}

static void copyMap() {

mapClone = new int[ySize][xSize];

for (int i = 0; i < ySize; i++) {

for (int j = 0; j < xSize; j++) {

int value = map[i][j];

if (value == 1) {

mapClone[i][j] = value;

}

}

}

}

static void checkMap(int y, int x) {

mapClone[y][x] = 3;

for (int k = 0; k < 4; k++) {

int tempY = y+moveY[k];

int tempX = x+moveX[k];

if (0 <= tempY && tempY < ySize && 0 <= tempX && tempX < xSize && mapClone[tempY][tempX] == 0) {

checkMap(tempY, tempX);

}

}

}

static void searchCheese() {

for (int i = 0; i < ySize; i++) {

for (int j = 0; j < xSize; j++) {

if (map[i][j] == 1) {

int tempValue = 0;

for (int k = 0; k < 4; k++) {

int tempY = i+moveY[k];

int tempX = j+moveX[k];

if (0 <= tempY && tempY < ySize && 0 <= tempX && tempX < xSize && mapClone[tempY][tempX] == 3) {

tempValue += 1;

}

}

if (tempValue >= 2) {

map[i][j] = 10;

} else {

isContinue = true;

}

}

}

}

for (int i = 0; i < ySize; i++) {

for (int j = 0; j < xSize; j++) {

if (map[i][j] == 10) {

map[i][j] = 0;

}

}

}

}

}


'코딩 > 백준 알고리즘' 카테고리의 다른 글

Q9095. 1, 2, 3 더하기  (0) 2019.02.09
Q1463. 1로 만들기  (0) 2019.02.09
1600번) 말이 되고픈 원숭이  (0) 2018.04.11
1939번) 통나무 옮기기  (0) 2018.04.10
2468번) 안전 영역  (0) 2018.04.10