J1Yun
ZU-TECHLOG
J1Yun
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ“‘ Category (135)
    • Algorithm (61)
      • ๐Ÿ“š Concept (6)
      • ๐Ÿ“˜ Baekjoon Judge (53)
      • ๐Ÿ“— Programmers (2)
    • Computer Science (42)
      • ๐Ÿ”’ Operating System (14)
      • ๐Ÿ“ก Network (15)
      • ๐Ÿ’พ Database (8)
      • ๐Ÿงฉ Design Pattern (4)
      • ๐Ÿ”‘ Security (1)
    • Activities (12)
      • ๐Ÿฆ ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ 9๊ธฐ (6)
      • ๐Ÿ’ป SW๋งˆ์—์ŠคํŠธ๋กœ 13๊ธฐ (6)
    • Infra (1)
      • โ˜๏ธ AWS (1)
    • Languages (1)
      • ๐Ÿ’™ Python (1)
    • Backend (7)
      • ๐Ÿ”ต Django (4)
      • ๐ŸŸข Node.js (3)
    • Ect. (8)
      • ๐Ÿ’ฌ Talk (0)
      • ๐Ÿ—‚๏ธ ๊ฐœ๋ฐœ์ง๊ตฐ ์ทจ์—… ์ค€๋น„์ž๋ฃŒ (8)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.
J1Yun

ZU-TECHLOG

[BOJ] ๋ฐฑ์ค€ 15683๋ฒˆ ๊ฐ์‹œ - ํŒŒ์ด์ฌ(Python)
Algorithm/๐Ÿ“˜ Baekjoon Judge

[BOJ] ๋ฐฑ์ค€ 15683๋ฒˆ ๊ฐ์‹œ - ํŒŒ์ด์ฌ(Python)

728x90

๋ฌธ์ œ

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

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

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

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

0 0 0 0 0 0
0 0 0 0 0 0
0 0 1 0 6 0
0 0 0 0 0 0

์ง€๋„์—์„œ 0์€ ๋นˆ ์นธ, 6์€ ๋ฒฝ, 1~5๋Š” CCTV์˜ ๋ฒˆํ˜ธ์ด๋‹ค. ์œ„์˜ ์˜ˆ์‹œ์—์„œ 1๋ฒˆ์˜ ๋ฐฉํ–ฅ์— ๋”ฐ๋ผ ๊ฐ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์„ '#'๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

CCTV๋Š” ๋ฒฝ์„ ํ†ต๊ณผํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, 1๋ฒˆ์ด → ๋ฐฉํ–ฅ์„ ๊ฐ์‹œํ•˜๊ณ  ์žˆ์„ ๋•Œ๋Š” 6์˜ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์นธ์„ ๊ฐ์‹œํ•  ์ˆ˜ ์—†๋‹ค.
0 0 0 0 0 0
0 2 0 0 0 0
0 0 0 0 6 0
0 6 0 0 2 0
0 0 0 0 0 0
0 0 0 0 0 5

์œ„์˜ ์˜ˆ์‹œ์—์„œ ๊ฐ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์„ ์•Œ์•„๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

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๊ฐœ๋ฅผ ๋„˜์ง€ ์•Š๋Š”๋‹ค.

์ถœ๋ ฅ

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

 

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

 

15683๋ฒˆ: ๊ฐ์‹œ

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

www.acmicpc.net

 

๐Ÿ’ก ํ’€์ด ๋ฐ ์ฝ”๋“œ

from itertools import product
from copy import deepcopy
n, m = map(int, input().split())
data, cctv, count = [], [], 0
for _ in range(n):
    data.append(list(map(int, input().split())))
for i in range(n):
    for j in range(m):
        if data[i][j]:
            count += 1
        if 1 <= data[i][j] <= 5:
            cctv.append((i, j))
dict = {
    1: [[0], [1], [2], [3]],
    2: [[0, 2], [1, 3]],
    3: [[0, 1], [1, 2], [2, 3], [3, 0]],
    4: [[0, 1, 2], [1, 2, 3], [2, 3, 0], [3, 0, 1]],
    5:[[0, 1, 2, 3]]
}
dx, dy = [-1, 0, 1, 0], [0, 1, 0, -1]
temp, max_cc = [], 0
for x, y in cctv:
    temp.append(dict[data[x][y]])
for prod in list(product(*temp)):
    cnt = 0
    copy_data = deepcopy(data)
    for i in range(len(cctv)):
        for d in prod[i]:
            t, s = cctv[i][0], cctv[i][1]
            while 1:
                nx, ny = t + dx[d], s + dy[d]
                if nx < 0 or nx >= n or ny < 0 or ny >= m or data[nx][ny]==6:
                    break
                if copy_data[nx][ny] == 0:
                    copy_data[nx][ny] = 7
                    cnt += 1
                t, s = nx, ny
    max_cc = max(max_cc, cnt)
print(n * m - count - max_cc)

๋จผ์ € CCTV ์ข…๋ฅ˜๋ณ„๋กœ ๋น„์ถœ ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์„ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ์ •์˜ํ•œ๋‹ค. (๋ถ:0, ๋™:1, ๋‚จ:2, ์„œ:3)

itertools ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ product ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ CCTV๊ฐ€ ๋น„์ถœ ์ˆ˜ ์žˆ๋Š” ๋ฐฉํ–ฅ์˜ ์กฐํ•ฉ์„ ๊ตฌํ–ˆ๋‹ค. ๋ฌธ์ œ์—์„œ CCTV์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๊ฐ€ 8๊ฐœ๋ฅผ ๋„˜์ง€ ์•Š๊ณ  n๊ณผ m ๋˜ํ•œ ์ตœ๋Œ€ 8์ดํ•˜์ด๊ธฐ ๋•Œ๋ฌธ์— product๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์‹œ๊ฐ„ ์ œํ•œ์— ๊ฑธ๋ฆฌ์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ํŒ๋‹จํ–ˆ๋‹ค. ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•  ๋•Œ๋Š” ๋ฐ”๋กœ ์‚ฌ๊ฐ์ง€๋Œ€์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋“  CCTV์˜ ๋ชจ๋“  ๋ฐฉํ–ฅ ์กฐํ•ฉ์„ ํƒ์ƒ‰ํ•˜๋ฉฐ ์‚ฌ๊ฐ์ง€๋Œ€๊ฐ€ ์•„๋‹Œ(CCTV๋กœ ๋น„์ถœ ์ˆ˜ ์žˆ๋Š”) ์นธ์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ์–ด ๊ทธ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•˜๊ณ , ์ „์ฒด ์นธ์—์„œ ๋ฒฝ, CCTV, CCTV๊ฐ€ ๋น„์ถ”๋Š” ์นธ์„ ๋บ€ ๋‚˜๋จธ์ง€ ์นธ์„ ์‚ฌ๊ฐ์ง€๋Œ€๋กœ ๊ณ„์‚ฐํ•˜์˜€๋‹ค. ์‚ฌ๊ฐ์ง€๋Œ€ ํƒ์ƒ‰์„ ์œ„ํ•œ for๋ฌธ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ์˜€๋‹ค.

728x90

'Algorithm > ๐Ÿ“˜ Baekjoon Judge' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] ๋ฐฑ์ค€ 1781๋ฒˆ ์ปต๋ผ๋ฉด - ํŒŒ์ด์ฌ(Python)  (0) 2022.07.04
[BOJ] ๋ฐฑ์ค€ 8980๋ฒˆ ํƒ๋ฐฐ - ํŒŒ์ด์ฌ(Python)  (0) 2022.07.04
[BOJ] ๋ฐฑ์ค€ 14499๋ฒˆ ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ - ํŒŒ์ด์ฌ(Python)  (0) 2022.04.02
[BOJ] ๋ฐฑ์ค€ 20055๋ฒˆ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ์œ„์˜ ๋กœ๋ด‡ - ํŒŒ์ด์ฌ(Python)  (0) 2022.04.01
[BOJ] ๋ฐฑ์ค€ 16234๋ฒˆ ์ธ๊ตฌ ์ด๋™ - ํŒŒ์ด์ฌ(Python)  (1) 2022.03.31
    'Algorithm/๐Ÿ“˜ Baekjoon Judge' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€์ด๋‹ค
    • [BOJ] ๋ฐฑ์ค€ 1781๋ฒˆ ์ปต๋ผ๋ฉด - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 8980๋ฒˆ ํƒ๋ฐฐ - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 14499๋ฒˆ ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ - ํŒŒ์ด์ฌ(Python)
    • [BOJ] ๋ฐฑ์ค€ 20055๋ฒˆ ์ปจ๋ฒ ์ด์–ด ๋ฒจํŠธ ์œ„์˜ ๋กœ๋ด‡ - ํŒŒ์ด์ฌ(Python)
    J1Yun
    J1Yun
    ๊ฐœ๋ฐœ ๊ด€๋ จ ๊ธฐ์ˆ  ๋ฐ ๊ณต๋ถ€ ๋‚ด์šฉ ๊ธฐ๋ก์žฅ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”