J

[JAVA] BOJ ๋ฐฑ์ค€ 15683 ๊ฐ์‹œ ๋ณธ๋ฌธ

๐Ÿ”‘ Problem Solving/๐Ÿ’ป Samsung SW Expert

[JAVA] BOJ ๋ฐฑ์ค€ 15683 ๊ฐ์‹œ

snowball๐Ÿฐ 2023. 1. 29. 00:46

https://www.acmicpc.net/problem/15683

 

15683๋ฒˆ: ๊ฐ์‹œ

์Šคํƒ€ํŠธ๋งํฌ์˜ ์‚ฌ๋ฌด์‹ค์€ 1×1ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋Š” N×M ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ๋ฌด์‹ค์—๋Š” ์ด K๊ฐœ์˜ CCTV๊ฐ€ ์„ค์น˜๋˜์–ด์ ธ ์žˆ๋Š”๋ฐ, CCTV๋Š” 5๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ๊ฐ CCTV๊ฐ€ ๊ฐ

www.acmicpc.net

๋ฌธ์ œ

์Šคํƒ€ํŠธ๋งํฌ์˜ ์‚ฌ๋ฌด์‹ค์€ 1×1ํฌ๊ธฐ์˜ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋Š” N×M ํฌ๊ธฐ์˜ ์ง์‚ฌ๊ฐํ˜•์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ๋ฌด์‹ค์—๋Š” ์ด K๊ฐœ์˜ CCTV๊ฐ€ ์„ค์น˜๋˜์–ด์ ธ ์žˆ๋Š”๋ฐ, CCTV๋Š” 5๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ๊ฐ CCTV๊ฐ€ ๊ฐ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1๋ฒˆ CCTV๋Š” ํ•œ ์ชฝ ๋ฐฉํ–ฅ๋งŒ ๊ฐ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. 2๋ฒˆ๊ณผ 3๋ฒˆ์€ ๋‘ ๋ฐฉํ–ฅ์„ ๊ฐ์‹œํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, 2๋ฒˆ์€ ๊ฐ์‹œํ•˜๋Š” ๋ฐฉํ–ฅ์ด ์„œ๋กœ ๋ฐ˜๋Œ€๋ฐฉํ–ฅ์ด์–ด์•ผ ํ•˜๊ณ , 3๋ฒˆ์€ ์ง๊ฐ ๋ฐฉํ–ฅ์ด์–ด์•ผ ํ•œ๋‹ค. 4๋ฒˆ์€ ์„ธ ๋ฐฉํ–ฅ, 5๋ฒˆ์€ ๋„ค ๋ฐฉํ–ฅ์„ ๊ฐ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.

CCTV๋Š” ๊ฐ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์— ์žˆ๋Š” ์นธ ์ „์ฒด๋ฅผ ๊ฐ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ๋ฌด์‹ค์—๋Š” ๋ฒฝ์ด ์žˆ๋Š”๋ฐ, CCTV๋Š” ๋ฒฝ์„ ํ†ต๊ณผํ•  ์ˆ˜ ์—†๋‹ค. CCTV๊ฐ€ ๊ฐ์‹œํ•  ์ˆ˜ ์—†๋Š” ์˜์—ญ์€ ์‚ฌ๊ฐ์ง€๋Œ€๋ผ๊ณ  ํ•œ๋‹ค.

CCTV๋Š” ํšŒ์ „์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ, ํšŒ์ „์€ ํ•ญ์ƒ 90๋„ ๋ฐฉํ–ฅ์œผ๋กœ ํ•ด์•ผ ํ•˜๋ฉฐ, ๊ฐ์‹œํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋ฐฉํ–ฅ์ด ๊ฐ€๋กœ ๋˜๋Š” ์„ธ๋กœ ๋ฐฉํ–ฅ์ด์–ด์•ผ ํ•œ๋‹ค.

CCTV๋Š” CCTV๋ฅผ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž.

0 0 2 0 3
0 6 0 0 0
0 0 6 6 0
0 0 0 0 0

์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ์— 2์˜ ๋ฐฉํ–ฅ์ด โ†• 3์˜ ๋ฐฉํ–ฅ์ด ←์™€ ↓์ธ ๊ฒฝ์šฐ ๊ฐ์‹œ๋ฐ›๋Š” ์˜์—ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

# # 2 # 3
0 6 # 0 #
0 0 6 6 #
0 0 0 0 #

์‚ฌ๋ฌด์‹ค์˜ ํฌ๊ธฐ์™€ ์ƒํƒœ, ๊ทธ๋ฆฌ๊ณ  CCTV์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, CCTV์˜ ๋ฐฉํ–ฅ์„ ์ ์ ˆํžˆ ์ •ํ•ด์„œ, ์‚ฌ๊ฐ ์ง€๋Œ€์˜ ์ตœ์†Œ ํฌ๊ธฐ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์‚ฌ๋ฌด์‹ค์˜ ์„ธ๋กœ ํฌ๊ธฐ N๊ณผ ๊ฐ€๋กœ ํฌ๊ธฐ M์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N, M ≤ 8)

๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์‚ฌ๋ฌด์‹ค ๊ฐ ์นธ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. 0์€ ๋นˆ ์นธ, 6์€ ๋ฒฝ, 1~5๋Š” CCTV๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , ๋ฌธ์ œ์—์„œ ์„ค๋ช…ํ•œ CCTV์˜ ์ข…๋ฅ˜์ด๋‹ค.

CCTV์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋Š” 8๊ฐœ๋ฅผ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์‚ฌ๊ฐ ์ง€๋Œ€์˜ ์ตœ์†Œ ํฌ๊ธฐ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์ฝ”๋“œ

์ „์ฒด ์ฝ”๋“œ

import java.io.*;
import java.util.*;

public class BOJ_15683 {
    static int N;
    static int M;
    static int max;
    static int num;
    static int[][] office;
    static int[][] cctv;
    static int[][] dir;
    static int result;

    public static void main(String[] args) throws Exception {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        StringTokenizer st = new StringTokenizer(bf.readLine(), " ");
        N = Integer.parseInt(st.nextToken());
        M = Integer.parseInt(st.nextToken());
        if (N > M)
            max = N;
        else
            max = M;
        office = new int[N][M];
        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(bf.readLine(), " ");
            for (int j = 0; j < M; j++) {
                office[i][j] = Integer.parseInt(st.nextToken());
                if (office[i][j] != 0 && office[i][j] != 6)
                    num++;
            }
        }
        cctv = new int[num][3];
        dir = new int[][] { { 0, 0, 0, 1 }, { 0, 1, 0, 1 }, { 1, 0, 0, 1 }, { 1, 1, 0, 1 }, { 1, 1, 1, 1 } };
        int k = 0;
        for (int i = 0; i < N; i++)
            for (int j = 0; j < M; j++)
                if (office[i][j] != 0 && office[i][j] != 6) {
                    cctv[k][0] = i;
                    cctv[k][1] = j;
                    k++;
                }
        result = N * M;
        dfs(0);
        sb.append(result).append("\\n");
        System.out.println(sb.toString());
    }

    static void dfs(int count) {
        if (count == num) {
            count();
            return;
        }
        if (office[cctv[count][0]][cctv[count][1]] == 2)
            for (int i = 0; i < 2; i++) {
                cctv[count][2] = i;
                dfs(count + 1);
            }
        else if (office[cctv[count][0]][cctv[count][1]] == 5) {
            cctv[count][2] = 1;
            dfs(count + 1);
        } else {
            for (int i = 0; i < 4; i++) {
                cctv[count][2] = i;
                dfs(count + 1);
            }
        }
    }

    static void count() {
        int[] dx = { -1, 0, 1, 0 };
        int[] dy = { 0, -1, 0, 1 };
        int status = 0;
        int count = 0;
        int[][] check = new int[N][M];
        for (int u = 0; u < N; u++)
            System.arraycopy(office[u], 0, check[u], 0, M);
        int nx, ny;
        for (int i = 0; i < num; i++) {
            status = office[cctv[i][0]][cctv[i][1]];
            for (int d = 0; d < 4; d++) {
                if (dir[status - 1][d] == 0)
                    continue;
                end: for (int k = 1; k < max; k++) {
                    nx = cctv[i][0] + k * dx[(d + cctv[i][2]) % 4];
                    ny = cctv[i][1] + k * dy[(d + cctv[i][2]) % 4];
                    if (nx < 0 || ny < 0 || nx >= N || ny >= M || office[nx][ny] == 6)
                        break end;
                    else
                        check[nx][ny] = 9;
                }
            }
        }

        for (int i = 0; i < N; i++)
            for (int j = 0; j < M; j++)
                if (check[i][j] == 0)
                    count++;
        if (count < result)
            result = count;
    }
}

ํ•œ์ค„์”ฉ ์‚ดํŽด๋ณด์ž!

static int N;
static int M;
static int max;
static int num;
static int[][] office;
static int[][] cctv;
static int[][] dir;
static int result;

์ „์—ญ ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

max๋Š” N, M ์ค‘ ๋” ํฐ ๊ฐ’์„ ๋‹ด๊ณ  ์žˆ๋‹ค. cctv๋Š” ๋ฒฝ์ด ๋‹ฟ๊ฑฐ๋‚˜ ์นธ์„ ๋ฒ—์–ด๋‚  ๋•Œ๊นŒ์ง€ ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ธธ์ด๋Š” max-1์ด ๋œ๋‹ค.

num์˜ cctv์˜ ๊ฐœ์ˆ˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.

office ๋ฐฐ์—ด์€ ์‚ฌ๋ฌด์‹ค์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.

cctv ๋ฐฐ์—ด์€ ๊ฐ cctv์˜ ์œ„์น˜, ๋ฐฉํ–ฅ์„ ๋‹ด๊ณ  ์žˆ๋‹ค.

dir ๋ฐฐ์—ด์€ 1~5 ๋ฒˆ cctv๊ฐ€ ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์˜ ์ •๋ณด๋ฅผ 0, 1๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ๋ฐ‘์—์„œ ๋‹ค์‹œ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.

for (int i = 0; i < N; i++) {
      st = new StringTokenizer(bf.readLine(), " ");
      for (int j = 0; j < M; j++) {
          office[i][j] = Integer.parseInt(st.nextToken());
          if (office[i][j] != 0 && office[i][j] != 6)
              num++;
      }
  }

office ์ •๋ณด๋ฅผ ์ž…๋ ฅ ๋ฐ›์Œ๊ณผ ๋™์‹œ์— cctv์˜ ๊ฐœ์ˆ˜๋ฅผ num ๋ณ€์ˆ˜์— ๋‹ด์•„์ค€๋‹ค.

cctv = new int[num][3];
dir = new int[][] { { 0, 0, 0, 1 }, { 0, 1, 0, 1 }, { 1, 0, 0, 1 }, { 1, 1, 0, 1 }, { 1, 1, 1, 1 } };
int k = 0;
for (int i = 0; i < N; i++)
    for (int j = 0; j < M; j++)
        if (office[i][j] != 0 && office[i][j] != 6) {
            cctv[k][0] = i;
            cctv[k][1] = j;
            k++;
        }
result = N * M;

dir ๋ฐฐ์—ด์„ ๋ณด์•˜์„ ๋•Œ dir[0]์—๋Š” cctv 1๋ฒˆ์ด ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ์กฐ์‚ฌ๊ฐ€ ๋‚˜์™€์žˆ๋‹ค. cctv๋Š” ํ•œ์ชฝ ๋ฐฉํ–ฅ ๋ฐ–์— ๋ณด์ง€ ๋ชปํ•˜๋ฏ€๋กœ 3๋ฒˆ ์ธ๋ฑ์Šค์—๋งŒ 1์˜ ๊ฐ’์„ ์ฃผ์—ˆ๋‹ค.

๋‚˜๋Š” ๋ถ, ์„œ, ๋‚จ, ๋™ ์ˆœ์œผ๋กœ ๊ทธ๋ฆผ์„ ์ฐธ๊ณ ํ•˜์—ฌ 0, 1๋กœ ํ‘œํ˜„ํ•˜์˜€๋‹ค. ๋ฐฑ์ค€ ๊ทธ๋ฆผ์— ๋”ฐ๋ฅด๋ฉด 1๋ฒˆ cctv๋Š” ๋™์ชฝ๋งŒ์„ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ์œผ๋ฏ€๋กœ 3๋ฒˆ์„ 1๋กœ ์„ค์ •ํ•˜์˜€๋‹ค.

for๋ฌธ์„ ํ†ตํ•ด cctv์˜ ํ–‰๋ ฌ ์ •๋ณด๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„์ค€๋‹ค. ์ด๋•Œ cctv์˜ ์œ„์น˜ ๊ฐ’์ด ์žˆ์œผ๋ฏ€๋กœ ๋ช‡๋ฒˆ cctv์ธ์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ๋‹ด์•„๋‘์ง€๋Š” ์•Š์•˜๋‹ค.

result๋Š” ๊ฒฐ๊ณผ๊ฐ’์„ ๋‹ด์„ ๋ณ€์ˆ˜๋กœ ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ์—์„œ ๋‚˜์˜ฌ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€๊ฐ’์ธ N*M์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜์˜€๋‹ค.

static void dfs(int count) {
    if (count == num) {
        count();
        return;
    }

dfs ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ชจ๋“  cctv์˜ ๋ฐฉํ–ฅ ์„ค์ •์„ ํ•ด์ค„ ๊ฒƒ์ด๋‹ค.

count๋Š” ์—ฌํƒœ ์„ค์ •๋œ cctv์˜ ๊ฐœ์ˆ˜๋ฅผ ๋œปํ•œ๋‹ค. num๊ณผ ๊ฐ™์•„์ง€๋ฉด ๋ชจ๋“  cctv์˜ ์„ค์ •์ด ๋๋‚ฌ๊ธฐ ๋•Œ๋ฌธ์— countํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์‚ฌ๊ฐ์ง€๋Œ€๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  returnํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.

if (office[cctv[count][0]][cctv[count][1]] == 2)
    for (int i = 0; i < 2; i++) {
        cctv[count][2] = i;
        dfs(count + 1);
    }
else if (office[cctv[count][0]][cctv[count][1]] == 5) {
    cctv[count][2] = 1;
    dfs(count + 1);
} else {
    for (int i = 0; i < 4; i++) {
        cctv[count][2] = i;
        dfs(count + 1);
    }
}

2๋ฒˆ cctv์™€ 5๋ฒˆ cctv๋Š” ๋‹ค๋ฅธ ๊ฒƒ๊ณผ๋Š” ๋‹ฌ๋ฆฌ 4๋ฐฉํ–ฅ ํšŒ์ „ ์ค‘ ๊ฐ™์•„์ง€๋Š” ๊ฒƒ์ด ์กด์žฌํ•˜์—ฌ ํ•จ์ˆ˜์˜ ์†๋„๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ธฐ ์œ„ํ•˜์—ฌ ๋ถ„๋ฆฌํ•˜์˜€๋‹ค.

count๋ฒˆ์งธ cctv์˜ ๋ฐฉํ–ฅ์„ ์„ค์ •ํ•ด์ฃผ๊ณ  dfsํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

static void count() {
  int[] dx = { -1, 0, 1, 0 };
  int[] dy = { 0, -1, 0, 1 };
  int status = 0;
  int count = 0;
  int[][] check = new int[N][M];
  for (int u = 0; u < N; u++)
      System.arraycopy(office[u], 0, check[u], 0, M);

dx, dy๋Š” ๋ถ, ์„œ, ๋‚จ, ๋™ ์ˆœ์œผ๋กœ ๋ฐฉํ–ฅ์„ ์„ค์ •ํ•ด์ฃผ๋Š” ๋ฐฐ์—ด์ด๋‹ค.

status๋Š” ์กฐ์‚ฌํ•  cctv์˜ ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜์ด๋‹ค.

count๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์‚ฌ๊ฐ์ง€๋Œ€๋ฅผ ์ €์žฅํ•œ๋‹ค.

check ๋ฐฐ์—ด์„ ํ†ตํ•ด office ๋ฐฐ์—ด์„ ๊นŠ์€ ๋ณต์‚ฌ ํ•ด์ค€๋‹ค. office ๋ฐฐ์—ด์€ ๋ชจ๋“  ์ƒํ™ฉ์„ ์กฐ์‚ฌํ•  ๋•Œ ์“ฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •์„ ํ•˜๋ฉด ์›๋ž˜ ์ƒํƒœ๋กœ ๋ฐ”๊พธ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ check๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ํ†ตํ•ด ์ˆ˜์ •์„ ํ•  ๊ฒƒ์ด๋‹ค.

int nx, ny;
for (int i = 0; i < num; i++) {
    status = office[cctv[i][0]][cctv[i][1]];

nx, ny๋ฅผ ํ†ตํ•ด cctv๊ฐ€ ๊ฐ์‹œํ•  ๊ตฌ์—ญ์˜ ์œ„์น˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ๊ฒƒ์ด๋‹ค.

์ฒซ๋ฒˆ์งธ for loop๋Š” cctv์˜ ๊ฐœ์ˆ˜์ด๋‹ค. ์ €์žฅ๋œ cctv ์ •๋ณด๋ฅผ ํ† ๋Œ€๋กœ ๋ชจ๋“  cctv์˜ ๊ฐ์‹œ๊ตฌ์—ญ์„ ํ™•์ธํ•œ๋‹ค.

status์— cctv์˜ ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•ด์ค€๋‹ค.

for (int d = 0; d < 4; d++) {
      if (dir[status - 1][d] == 0)
          continue;

๋‘๋ฒˆ์งธ for loop๋ฅผ ํ†ตํ•ด ๋ถ, ์„œ, ๋‚จ, ๋™์˜ ๋„ค ๋ฐฉํ–ฅ์„ ์กฐ์‚ฌํ•  ๊ฒƒ์ด๋‹ค. ์ด๋•Œ dir๋ฐฐ์—ด์„ ํ†ตํ•ด cctv์˜ ํ•ด๋‹น ๋ฒˆํ˜ธ๊ฐ€ ์กฐ์‚ฌํ•  ๋ฐฉํ–ฅ์ด ์•„๋‹Œ ๊ฒฝ์šฐ continue๋ฅผ ์‹œํ–‰ํ•œ๋‹ค.

end: for (int k = 1; k < max; k++) {
      nx = cctv[i][0] + k * dx[(d + cctv[i][2]) % 4];
      ny = cctv[i][1] + k * dy[(d + cctv[i][2]) % 4];
      if (nx < 0 || ny < 0 || nx >= N || ny >= M || office[nx][ny] == 6)
          break end;
      else
          check[nx][ny] = 9;
  }

ํ•ด๋‹น ๋ฐฉํ–ฅ ์ชฝ์˜ ๋ชจ๋“  ๊ตฌ์—ญ์„ ์กฐ์‚ฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— k๋ฅผ max๊นŒ์ง€๋กœ ์„ค์ •ํ•ด์ค€๋‹ค.

์ด๋•Œ ์›๋ž˜๋Š” k * dx[d]๋กœ ํ‘œํ˜„ํ•ด์•ผ ํ•˜์ง€๋งŒ cctv์˜ ํšŒ์ „์„ ๊ณ ๋ คํ•˜์—ฌ ํšŒ์ „ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด cctv[i][2]๋ฅผ ๋” ํ•ด์ค€๋‹ค. index๊ฐ€ 3์„ ๋„˜์ง€ ์•Š์•„์•ผ ํ•˜๋ฏ€๋กœ ํ•ฉ์„ 4๋กœ ๋‚˜๋ˆˆ ๋ชซ์„ ์ธ๋ฑ์Šค ์ •๋ณด์— ๋„ฃ์–ด์ค€๋‹ค.

๋งŒ์•ฝ ๊ฒฉ์ž๋ฅผ ๋ฒ—์–ด๋‚˜๊ฑฐ๋‚˜ ๋ฒฝ์ธ ๊ฒฝ์šฐ ๊ทธ ๋ฐฉํ–ฅ์€ ๋” ์ด์ƒ ์กฐ์‚ฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

์•„๋‹Œ ๊ฒฝ์šฐ cctv์˜ ๊ฐ์‹œ ๊ตฌ์—ญ์ด๋ฏ€๋กœ 9๋กœ ํ‘œ์‹œํ•œ๋‹ค.

for (int i = 0; i < N; i++)
    for (int j = 0; j < M; j++)
        if (check[i][j] == 0)
            count++;

if (count < result)
    result = count;

์ด์ค‘ loop๋ฅผ ํ†ตํ•ด 0์ธ ๊ตฌ์—ญ(์‚ฌ๊ฐ์ง€๋Œ€)์˜ ๊ฐœ์ˆ˜๋ฅผ ์กฐ์‚ฌํ•œ๋‹ค. ๊ฐ€๋Šฅํ•œ count ์ค‘ ์ตœ์†Œ๊ฐ’์„ ์ฐพ์•„ result์— ๋„ฃ์–ด์ค€๋‹ค.

Comments