๐ŸŒฌ๏ธ๋ฐฑ์ค€ 17144 : ๋ฏธ์„ธ๋จผ์ง€

๊ธ๊ธยท2025๋…„ 10์›” 10์ผ

์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ชฉ๋ก ๋ณด๊ธฐ
20/31

๋ฌธ์ œ

17144๋ฒˆ : ๋ฏธ์„ธ๋จผ์ง€
Lv: ๊ณจ๋“œ 4

๋ฌธ์ œ๋ฅผ ์š”์•ฝํ•˜์ž๋ฉด ์•„๋ž˜ ๊ณผ์ •์„ T๋งŒํผ ๋ฐ˜๋ณตํ•˜๋ผ๋Š” ๊ฒƒ์ด๋‹ค.
1. ๋ฏธ์„ธ๋จผ์ง€๋ฅผ ํ™•์žฅํ•˜๊ณ 
2. ๊ณต๊ธฐ์ฒญ์ •๊ธฐ๋ฅผ ๋Œ๋ฆฐ๋‹ค.

์ดˆ๊ธฐ ์ ‘๊ทผ

์ด ๋ฌธ์ œ๋ฅผ ์ฒ˜์Œ ๋ดค์„ ๋•Œ๋Š”
1. ๋ฏธ์„ธ๋จผ์ง€ ํ™•์žฅ
๋ฏธ์„ธ๋จผ์ง€๋ฅผ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์€ bfs๋กœ ๋Œ๋ฉด์„œ ํ•˜๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ ,
2. ๊ณต๊ธฐ์ฒญ์ •๊ธฐ ๋Œ๋ฆฐ๋‹ค
๊ณต๊ธฐ์ฒญ์ •๊ธฐ๋Š” dfs๋กœ ๋Œ๋ฆฌ๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ gpt์—๊ฒŒ ๋ฌผ์–ด๋ณด๋‹ˆ ๋‘˜ ๋‹ค ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ ํ‘ธ๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ด๋ผ๊ณ  ํ–ˆ๋‹ค.

๊ฒฉ์žํŒ์˜ ๋ฒ”์œ„์™€ T์˜ ๋ฒ”์œ„๋ฅผ ๊ณ ๋ คํ•ด๋ณด์•˜์„ ๋•Œ ์™„์ „ํƒ์ƒ‰์œผ๋กœ ํ•ด๋„ ์ถฉ๋ถ„ํ•˜๋‹ค๋Š” ์ด์•ผ๊ธฐ์˜€๋‹ค.

์ฝ”๋“œ ํ๋ฆ„

1. ๋ฏธ์„ธ๋จผ์ง€, ๊ณต๊ธฐ์ฒญ์ •๊ธฐ๋ฅผ T๋งŒํผ ๋ฐ˜๋ณต

		// T๋งŒํผ ๋ฐ˜๋ณต
		for (int t = 0; t < T; t++) {
			// ๋ฏธ์„ธ๋จผ์ง€ ํ™•์‚ฐ
			board = spread();

			// ๊ณต๊ธฐ์ฒญ์ •๊ธฐ ์ž‘๋™
			airCleaner();
		}

2. ๋ฏธ์„ธ๋จผ์ง€ ํ™•์žฅ ๋ฉ”์„œ๋“œ : spread()

ํ™•์žฅ๋œ ๋ฏธ์„ธ๋จผ์ง€๋ฅผ ์ €์žฅํ•  ์ƒˆ๋กœ์šด ์ด์ฐจ์› ๋ฐฐ์—ด newBoard๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

2์ฐจ์› ๋ฐฐ์—ด์„ ์™„์ „ํƒ์ƒ‰์œผ๋กœ ๋Œ๋ฉด์„œ ๋ฏธ์„ธ๋จผ์ง€๋ฅผ ํ™•์žฅํ•ด๋‚˜๊ฐ€๋Š” ๋กœ์ง์ด๋‹ค.

	private static int[][] spread() {
		int[][] newBoard = new int[R][C];
		
		//๊ณต๊ธฐ์ฒญ์ •๊ธฐ ์œ„์น˜ ๋ณต์‚ฌ
		newBoard[air.get(0)[0]][air.get(0)[1]] = -1;
		newBoard[air.get(1)[0]][air.get(1)[1]] = -1;
	
		
		for (int i = 0; i < R; i++) {
			for (int j = 0; j < C; j++) {
				if (board[i][j] > 0) {
					int spreadAmount = board[i][j] /5;
					int cnt = 0;
					
					//ํ™•์‚ฐ๋œ ๋จผ์ง€๋ฅผ newBoard์— ๋ˆ„์ 
					for (int k = 0; k < 4; k++) {
						int nx = i + di[k];
						int ny = j + dj[k];
						if (nx >= 0 && nx < R && ny >= 0 && ny < C && board[nx][ny] != -1) {
							newBoard[nx][ny] += spreadAmount;
							cnt += 1;
						}
					}
					//๋‚จ์€ ๋ฏธ์„ธ๋จผ์ง€๋ฅผ newBoard์— ๋”ํ•จ
					newBoard[i][j] += board[i][j] - spreadAmount * cnt;
				}

			}
		}
		return newBoard;

	}

3. ๊ณต๊ธฐ์ฒญ์ •๊ธฐ ๋ฉ”์„œ๋“œ : airCleaner()

์ƒ๋‹จ ๊ณต๊ธฐ์ฒญ์ €๊ธฐ๋Š” ๋ฐ˜์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ,
ํ•˜๋‹จ ๊ณต๊ธฐ์ฒญ์ •๊ธฐ๋Š” ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ๋Œ๊ธฐ ๋•Œ๋ฌธ์—
๋กœ์ง์„ ๋”ฐ๋กœ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•˜๋‹ค๋ณด๋‹ˆ ์ฝ”๋“œ๊ฐ€ ๊ต‰์žฅํžˆ ๊ธธ์–ด์กŒ๋‹ค.

๋กœ์ง์€ ๊ฐ„๋‹จํ•˜๊ฒŒ for๋ฌธ์œผ๋กœ ๋ฐฉํ–ฅ์„ ๋Œ๋ฆฌ๋ฉด์„œ ๋ฏธ์„ธ๋จผ์ง€๋ฅผ ํ•œ ์นธ ์”ฉ ์ด๋™์‹œํ‚ค๋ฉด ๋œ๋‹ค.

์ด๋•Œ, ์ฃผ์˜ํ•ด์•ผํ•  ๋ถ€๋ถ„์€ ํ•œ ์นธ ์”ฉ ๋ฐ€๋ฆฌ๋‹ค๋ณด๋ฉด ์ œ์ผ ๋ ์นธ์˜ ๋ฏธ์„ธ๋จผ์ง€๊ฐ€ ๋ฎ์–ด์”Œ์›Œ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ temp๋กœ ์ €์žฅํ•˜๊ณ , ๋‹ค์Œ ๋ฐฉํ–ฅ ๋•Œ ๋„˜๊ฒจ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

	private static void airCleaner() {
	    int x1 = air.get(0)[0]; // ์ƒ๋‹จ ๊ณต๊ธฐ์ฒญ์ •๊ธฐ ํ–‰
	    int x2 = air.get(1)[0]; // ํ•˜๋‹จ ๊ณต๊ธฐ์ฒญ์ •๊ธฐ ํ–‰

	    // 1. ์ƒ๋‹จ ๊ณต๊ธฐ์ฒญ์ •๊ธฐ (๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ: ์šฐ -> ์ƒ -> ์ขŒ -> ํ•˜)
	    
	    // 1-1. ์˜ค๋ฅธ์ชฝ ์ด๋™ (x1 ํ–‰)
	    // (x1, C-1) ๊ฐ’์„ ์ €์žฅ
	    int temp = board[x1][C - 1]; 
	    for (int j = C - 1; j > 1; j--) {
	        board[x1][j] = board[x1][j - 1];
	    }
	    // (x1, 1)์€ ์ •ํ™”๋œ ๋ฐ”๋žŒ์ด ๋“ค์–ด์˜ด. (x1, 0)์€ -1๋กœ ์œ ์ง€
	    board[x1][1] = 0; 
	    
	    // 1-2. ์œ„์ชฝ ์ด๋™ (C-1 ์—ด)
	    // (0, C-1) ๊ฐ’์„ ์ €์žฅ
	    int temp2 = board[0][C - 1];
	    for (int i = 0; i < x1 - 1; i++) {
	        board[i][C - 1] = board[i + 1][C - 1];
	    }
	    // ์ด์ „ ๋‹จ๊ณ„ (x1, C-1) ๊ฐ’์ด (x1-1, C-1)๋กœ ์ด๋™
	    board[x1 - 1][C - 1] = temp;
	    temp = temp2; // ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ (0, C-1) ๊ฐ’์„ ์‚ฌ์šฉ
	    
	    // 1-3. ์™ผ์ชฝ ์ด๋™ (0 ํ–‰)
	    // (0, 0) ๊ฐ’์„ ์ €์žฅ (0, 0)์€ -1์ด ์•„๋‹˜! (0, 0)์ด ๊ฒฝ๊ณ„
	    temp2 = board[0][0]; 
	    for (int j = 0; j < C - 2; j++) { // j=0๋ถ€ํ„ฐ C-3๊นŒ์ง€ (C-2์นธ ์ด๋™)
	        board[0][j] = board[0][j + 1];
	    }
	    // ์ด์ „ ๋‹จ๊ณ„ (0, C-1) ๊ฐ’์ด (0, C-2)๋กœ ์ด๋™
	    board[0][C - 2] = temp;
	    temp = temp2; // (0, 0) ๊ฐ’์„ ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ

	    // 1-4. ์•„๋ž˜์ชฝ ์ด๋™ (0 ์—ด)
	    // (x1-1, 0) ๊ฐ’์„ ์ €์žฅ (์ด๋™์˜ ๋ ์ง€์ )
	    temp2 = board[x1 - 1][0]; 
	    for (int i = x1 - 1; i > 1; i--) { // i=x1-1๋ถ€ํ„ฐ 2๊นŒ์ง€ (x1-2์นธ ์ด๋™)
	        board[i][0] = board[i - 1][0];
	    }
	    // ์ด์ „ ๋‹จ๊ณ„ (0, 0) ๊ฐ’์ด (1, 0)์œผ๋กœ ์ด๋™
	    board[1][0] = temp; 
	    // ๊ณต๊ธฐ์ฒญ์ •๊ธฐ (-1)๋กœ ๋ฏธ์„ธ๋จผ์ง€๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒƒ์€ ์ •ํ™”๋˜๋ฏ€๋กœ, (x1-1, 0)์— ์žˆ๋˜ ๊ฐ’์€ ์‚ฌ๋ผ์ง.

	    // 2. ํ•˜๋‹จ ๊ณต๊ธฐ์ฒญ์ •๊ธฐ (์‹œ๊ณ„ ๋ฐฉํ–ฅ: ์šฐ -> ํ•˜ -> ์ขŒ -> ์ƒ)

	    // 2-1. ์˜ค๋ฅธ์ชฝ ์ด๋™ (x2 ํ–‰)
	    temp = board[x2][C - 1]; 
	    for (int j = C - 1; j > 1; j--) {
	        board[x2][j] = board[x2][j - 1];
	    }
	    board[x2][1] = 0; 
	    
	    // 2-2. ์•„๋ž˜์ชฝ ์ด๋™ (C-1 ์—ด)
	    temp2 = board[R - 1][C - 1];
	    for (int i = R - 1; i > x2 + 1; i--) { 
	        board[i][C - 1] = board[i - 1][C - 1];
	    }
	    board[x2 + 1][C - 1] = temp;
	    temp = temp2; 
	    
	    // 2-3. ์™ผ์ชฝ ์ด๋™ (R-1 ํ–‰)
	    temp2 = board[R - 1][0];
	    for (int j = 0; j < C - 2; j++) {
	        board[R - 1][j] = board[R - 1][j + 1];
	    }
	    board[R - 1][C - 2] = temp;
	    temp = temp2; 

	    // 2-4. ์œ„์ชฝ ์ด๋™ (0 ์—ด)
	    // (x2+1, 0) ๊ฐ’์„ ์ €์žฅ (์ด๋™์˜ ๋ ์ง€์ )
	    temp2 = board[x2 + 1][0]; 
	    for (int i = x2 + 1; i < R - 1; i++) {
	        board[i][0] = board[i + 1][0];
	    }
	    board[R - 2][0] = temp;
	    // ๊ณต๊ธฐ์ฒญ์ •๊ธฐ (-1)๋กœ ๋ฏธ์„ธ๋จผ์ง€๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒƒ์€ ์ •ํ™”๋˜๋ฏ€๋กœ, (x2+1, 0)์— ์žˆ๋˜ ๊ฐ’์€ ์‚ฌ๋ผ์ง.
	}

๋ฐฐ์šด ์ 

์ž…๋ ฅ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•  ๊ฒƒ.
bfs, dfs์—๋งŒ ์‚ฌ๋กœ์žกํžˆ์ง€ ๋ง๊ณ  ์™„์ „ํƒ์ƒ‰์œผ๋กœ๋„ ๊ฐ€๋Šฅํ•œ์ง€๋ฅผ ๊ณ ๋ คํ•ด๋ณผ ๊ฒƒ

์ „์ฒด์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.StringTokenizer;

//์ฒ˜์Œ์—๋Š” bfs๋กœ ์ ‘๊ทผ -> ใ„ดใ„ด ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ํ•˜์…ˆ
//๊ณต๊ธฐ์ฒญ์ •๊ธฐ ํŠผ ๊ฑฐ dfs๋กœ ์ ‘๊ทผ -> ใ„ดใ„ด ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ํ•˜์…ˆ
public class backjoon_17144_๋ฏธ์„ธ๋จผ์ง€ {

	static int R, C, T;
	static int[][] board;
	static int[] di = { -1, 1, 0, 0 };
	static int[] dj = { 0, 0, -1, 1 };
	static List<int[]> air;

	// ์ฒซ๋ฒˆ์งธ ๊ณต์ฒญ ๋ฐฉํ–ฅ ์šฐ, ์ƒ, ์ขŒ, ํ•˜
	static int[] airDi_1 = { 0, -1, 0, 1 };
	static int[] airDj_1 = { 1, 0, -1, 0 };

	// ๋‘๋ฒˆ์งธ ๊ณต์ฒญ ๋ฐฉํ–ฅ ์šฐ, ํ•˜, ์ขŒ, ์ƒ
	static int[] airDi_2 = { 0, 1, 0, -1 };
	static int[] airDj_2 = { 1, 0, -1, 0 };

	public static void main(String[] args) throws IOException {

		// R,C,T์˜ ๋ฒ”์œ„๋ฅผ ๊ณ ๋ คํ•ด๋ณด์•˜์„ ๋•Œ ์™„์ „ํƒ์ƒ‰์œผ๋กœ ํ•˜๋Š” ๊ฒŒ ๋‚˜์Œ
		System.setIn(new FileInputStream("src/input.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		StringTokenizer st = new StringTokenizer(br.readLine());

		R = Integer.parseInt(st.nextToken());
		C = Integer.parseInt(st.nextToken());
		T = Integer.parseInt(st.nextToken());

		board = new int[R][C];
		air = new ArrayList<>();

		for (int i = 0; i < R; i++) {
			st = new StringTokenizer(br.readLine());
			for (int j = 0; j < C; j++) {
				board[i][j] = Integer.parseInt(st.nextToken());
				if (board[i][j] == -1) {
					air.add(new int[] { i, j });
				}
			}
		}

		// T๋งŒํผ ๋ฐ˜๋ณต
		for (int t = 0; t < T; t++) {
			// ๋ฏธ์„ธ๋จผ์ง€ ํ™•์‚ฐ
			board = spread();

			// ๊ณต๊ธฐ์ฒญ์ •๊ธฐ ์ž‘๋™
			airCleaner();
		}

		// ๋‚จ์•„์žˆ๋Š” ๋ฏธ์„ธ๋จผ์ง€์˜ ์–‘์„ ๊ตฌํ•˜๊ธฐ
		int rest = 0;

		for (int i = 0; i < R; i++) {
			for (int j = 0; j < C; j++) {
				if (board[i][j] > 0) {
					
					rest += board[i][j];
				}
				
			}
		}

		System.out.println(rest);

	}

	private static void airCleaner() {
	    int x1 = air.get(0)[0]; // ์ƒ๋‹จ ๊ณต๊ธฐ์ฒญ์ •๊ธฐ ํ–‰
	    int x2 = air.get(1)[0]; // ํ•˜๋‹จ ๊ณต๊ธฐ์ฒญ์ •๊ธฐ ํ–‰

	    // 1. ์ƒ๋‹จ ๊ณต๊ธฐ์ฒญ์ •๊ธฐ (๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ: ์šฐ -> ์ƒ -> ์ขŒ -> ํ•˜)
	    
	    // 1-1. ์˜ค๋ฅธ์ชฝ ์ด๋™ (x1 ํ–‰)
	    // (x1, C-1) ๊ฐ’์„ ์ €์žฅ
	    int temp = board[x1][C - 1]; 
	    for (int j = C - 1; j > 1; j--) {
	        board[x1][j] = board[x1][j - 1];
	    }
	    // (x1, 1)์€ ์ •ํ™”๋œ ๋ฐ”๋žŒ์ด ๋“ค์–ด์˜ด. (x1, 0)์€ -1๋กœ ์œ ์ง€
	    board[x1][1] = 0; 
	    
	    // 1-2. ์œ„์ชฝ ์ด๋™ (C-1 ์—ด)
	    // (0, C-1) ๊ฐ’์„ ์ €์žฅ
	    int temp2 = board[0][C - 1];
	    for (int i = 0; i < x1 - 1; i++) {
	        board[i][C - 1] = board[i + 1][C - 1];
	    }
	    // ์ด์ „ ๋‹จ๊ณ„ (x1, C-1) ๊ฐ’์ด (x1-1, C-1)๋กœ ์ด๋™
	    board[x1 - 1][C - 1] = temp;
	    temp = temp2; // ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ (0, C-1) ๊ฐ’์„ ์‚ฌ์šฉ
	    
	    // 1-3. ์™ผ์ชฝ ์ด๋™ (0 ํ–‰)
	    // (0, 0) ๊ฐ’์„ ์ €์žฅ (0, 0)์€ -1์ด ์•„๋‹˜! (0, 0)์ด ๊ฒฝ๊ณ„
	    temp2 = board[0][0]; 
	    for (int j = 0; j < C - 2; j++) { // j=0๋ถ€ํ„ฐ C-3๊นŒ์ง€ (C-2์นธ ์ด๋™)
	        board[0][j] = board[0][j + 1];
	    }
	    // ์ด์ „ ๋‹จ๊ณ„ (0, C-1) ๊ฐ’์ด (0, C-2)๋กœ ์ด๋™
	    board[0][C - 2] = temp;
	    temp = temp2; // (0, 0) ๊ฐ’์„ ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ

	    // 1-4. ์•„๋ž˜์ชฝ ์ด๋™ (0 ์—ด)
	    // (x1-1, 0) ๊ฐ’์„ ์ €์žฅ (์ด๋™์˜ ๋ ์ง€์ )
	    temp2 = board[x1 - 1][0]; 
	    for (int i = x1 - 1; i > 1; i--) { // i=x1-1๋ถ€ํ„ฐ 2๊นŒ์ง€ (x1-2์นธ ์ด๋™)
	        board[i][0] = board[i - 1][0];
	    }
	    // ์ด์ „ ๋‹จ๊ณ„ (0, 0) ๊ฐ’์ด (1, 0)์œผ๋กœ ์ด๋™
	    board[1][0] = temp; 
	    // ๊ณต๊ธฐ์ฒญ์ •๊ธฐ (-1)๋กœ ๋ฏธ์„ธ๋จผ์ง€๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒƒ์€ ์ •ํ™”๋˜๋ฏ€๋กœ, (x1-1, 0)์— ์žˆ๋˜ ๊ฐ’์€ ์‚ฌ๋ผ์ง.

	    // 2. ํ•˜๋‹จ ๊ณต๊ธฐ์ฒญ์ •๊ธฐ (์‹œ๊ณ„ ๋ฐฉํ–ฅ: ์šฐ -> ํ•˜ -> ์ขŒ -> ์ƒ)

	    // 2-1. ์˜ค๋ฅธ์ชฝ ์ด๋™ (x2 ํ–‰)
	    temp = board[x2][C - 1]; 
	    for (int j = C - 1; j > 1; j--) {
	        board[x2][j] = board[x2][j - 1];
	    }
	    board[x2][1] = 0; 
	    
	    // 2-2. ์•„๋ž˜์ชฝ ์ด๋™ (C-1 ์—ด)
	    temp2 = board[R - 1][C - 1];
	    for (int i = R - 1; i > x2 + 1; i--) { 
	        board[i][C - 1] = board[i - 1][C - 1];
	    }
	    board[x2 + 1][C - 1] = temp;
	    temp = temp2; 
	    
	    // 2-3. ์™ผ์ชฝ ์ด๋™ (R-1 ํ–‰)
	    temp2 = board[R - 1][0];
	    for (int j = 0; j < C - 2; j++) {
	        board[R - 1][j] = board[R - 1][j + 1];
	    }
	    board[R - 1][C - 2] = temp;
	    temp = temp2; 

	    // 2-4. ์œ„์ชฝ ์ด๋™ (0 ์—ด)
	    // (x2+1, 0) ๊ฐ’์„ ์ €์žฅ (์ด๋™์˜ ๋ ์ง€์ )
	    temp2 = board[x2 + 1][0]; 
	    for (int i = x2 + 1; i < R - 1; i++) {
	        board[i][0] = board[i + 1][0];
	    }
	    board[R - 2][0] = temp;
	    // ๊ณต๊ธฐ์ฒญ์ •๊ธฐ (-1)๋กœ ๋ฏธ์„ธ๋จผ์ง€๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒƒ์€ ์ •ํ™”๋˜๋ฏ€๋กœ, (x2+1, 0)์— ์žˆ๋˜ ๊ฐ’์€ ์‚ฌ๋ผ์ง.
	}

	private static int[][] spread() {
		int[][] newBoard = new int[R][C];
		
		//๊ณต๊ธฐ์ฒญ์ •๊ธฐ ์œ„์น˜ ๋ณต์‚ฌ
		newBoard[air.get(0)[0]][air.get(0)[1]] = -1;
		newBoard[air.get(1)[0]][air.get(1)[1]] = -1;
	
		
		for (int i = 0; i < R; i++) {
			for (int j = 0; j < C; j++) {
				if (board[i][j] > 0) {
					int spreadAmount = board[i][j] /5;
					int cnt = 0;
					
					//ํ™•์‚ฐ๋œ ๋จผ์ง€๋ฅผ newBoard์— ๋ˆ„์ 
					for (int k = 0; k < 4; k++) {
						int nx = i + di[k];
						int ny = j + dj[k];
						if (nx >= 0 && nx < R && ny >= 0 && ny < C && board[nx][ny] != -1) {
							newBoard[nx][ny] += spreadAmount;
							cnt += 1;
						}
					}
					//๋‚จ์€ ๋ฏธ์„ธ๋จผ์ง€๋ฅผ newBoard์— ๋”ํ•จ
					newBoard[i][j] += board[i][j] - spreadAmount * cnt;
				}

			}
		}
		return newBoard;

	}

}

0๊ฐœ์˜ ๋Œ“๊ธ€