π‘ 쑰건 λ° νμ΄
- 체μ€νμ ν¬κΈ°λ 10 μ΄νμ μμ°μ
- λΉμμ λμ μ μλ κ³³μλ
1
, λΉμμ λμ μ μλ κ³³μλ 0
- λκ°μ λ°©ν₯μΌλ‘ μμ§μ΄λ λΉμμ΄ μ΄λν μ μλ κ²½λ‘μ λΉμμ λμ μ μλ€.
- λ°±νΈλνΉ μ νμ λ¬Έμ
π₯ μμ€ μ½λ
from sys import stdin
n = int(stdin.readline())
chess_map = []
black = []
white = []
color = [[0] * n for _ in range(n)]
for i in range(n):
for j in range(n):
color[i][j] = (i % 2 == 0 and j % 2 == 0) or (i % 2 != 0 and j % 2 != 0)
for i in range(n):
chess_map.append(list(map(int, input().split())))
for j in range(n):
# Trueκ° κ²μμ
if chess_map[i][j] == 1 and color[i][j] == 1:
black.append((i, j))
# Falseκ° ν°μ
if chess_map[i][j] == 1 and color[i][j] == 0:
white.append((i, j))
# κ²μμμΈ κ²½μ°
Bcnt = 0
# ν°μμΈ κ²½μ°
Wcnt = 0
isused01 = [0] * (n * 2 - 1)
isused02 = [0] * (n * 2 - 1)
def fun(bishop, index, count):
global Bcnt, Wcnt
if index == len(bishop):
rx, ry = bishop[index - 1]
# λΈλμ΄λ©΄ Bcnt μ΅λκ°
if color[rx][ry]:
Bcnt = max(Bcnt, count)
# ν°μμ΄λ©΄ Wcnt μ΅λκ°
else:
Wcnt = max(Wcnt, count)
return
x, y = bishop[index]
if isused01[x + y] or isused02[x - y + n - 1]:
fun(bishop, index + 1, count)
else:
isused01[x + y] = 1
isused02[x - y + n - 1] = 1
fun(bishop, index + 1, count + 1)
isused01[x + y] = 0
isused02[x - y + n - 1] = 0
fun(bishop, index + 1, count)
if len(black) > 0:
fun(black, 0, 0)
if len(white) > 0:
fun(white, 0, 0)
print(Bcnt + Wcnt)
π μμ λ° μ€νκ²°κ³Ό
μμ
5
1 1 0 1 1
0 1 0 0 0
1 0 1 0 1
1 0 0 0 0
1 0 1 1 1
μ€νκ²°κ³Ό
7
β¨οΈ λ¬Έμ νμ΄
- νκ³Ό λ°±μ ꡬλΆν μ μλ 체μ€νμ
True
μ False
λ₯Ό μ¬μ©ν΄ λ€μ λ§λ λ€.
- λΉμμ λμ μ μλ μ’νλ₯Ό νκ³Ό λ°±μΌλ‘ λλμ΄ κ°κ°
black
κ³Ό white
리μ€νΈμ λ£μ΄μ€λ€.
- λΉμμ λκ³ , λμ μ μλ κ³³μ νμν λ μ¬μ©ν
isused
리μ€νΈλ₯Ό μμ±νλ€.
- μ¬κ·ν¨μλ₯Ό νκ³ κ° μ’νμ ν΄λΉνλ κ³³μ΄
isused01
, isused02
λͺ¨λ μ¬μ© μ€μ΄κ±°λ
λμ μ μλ μ리λΌλ©΄ index
λ₯Ό νλ λλ¦¬κ³ λ€μ μ¬κ·.
4λ²
μ ν΄μ₯νμ§ μμΌλ©΄ λΉμμ λκ³ λμ λΉμ κ°μμ index
λ₯Ό 1μ© λλ¦¬κ³ μ¬κ·
- μ¬κ·λ₯Ό λΉ μ Έλμ€λ©΄ μ§μ μ λμλ λΉμμ μ 보λ₯Ό μ κ±°νκ³ λ€μ μ’νλ‘ λμ΄κ°κΈ° μν΄
index + 1
νκ³ μ¬κ·
index
κ°μ΄ ν°μ νΉμ κ²μ μ λΉμ μ’νμ κΈΈμ΄μ κ°λ€λ©΄ κ²μ μμ μ΅λκ°κ³Ό ν°μμ μ΅λκ°μ κ°κ° Bcnt
μ Wcnt
μ μ μ₯νλ€.
πΎ λλμ
- 무μ§μ± λ°±νΈλνΉμΌλ‘ νλ €λ€κ° μκ°μ΄κ³Όκ° λ΄λ€.
- λ°±νΈλνΉμ μνλ €λ©΄ μ¬κ·λ₯Ό μ μ§€μ€ μμμΌνλλ° μμ§λ μ¬κ·ν¨μκ° μ½μ μ΄λ€.
- ν, λ°± μΉΈμ ꡬλΆμ§μ΄ ꡬννλλ°μλ ν·κ°λ¦¬λ λΆλΆμ΄ μμλ€.
- ν¨μλ₯Ό ꡬννκ³ μλ μ΄ν΄κ° μλλ λΆλΆμ΄ μμ΄μ λ³νλ₯Ό λ§μ΄ μ³λ¨λ€.
- λ€μλ νκ³ μΆμ§ μμ μ νμ΄μ§λ§, κ·Έλλ μλ 보λ€λ λμμ§λ λλμ λ°λλ€.
λ€μ νμ΄λ΄μΌκ² λ€.