π¦₯ μ½ν
/BAEKJOON
[BAEKJOON python] 21608_μμ΄ μ΄λ±νκ΅
μ§μ§μνμΉ΄
2023. 4. 8. 22:47
728x90
λ°μν
μμ΄μ΄λ±νκ΅
μμ΄ μ΄λ±νκ΅μλ κ΅μ€μ΄ νλ μκ³ , κ΅μ€μ N×N ν¬κΈ°μ 격μ
νκ΅μ λ€λλ νμμ μλ N2λͺ
λͺ¨λ νμμ μ리λ₯Ό μ νλ λ
νμμ 1λ²λΆν° N2λ²κΉμ§ λ²νΈκ° λ§€κ²¨μ Έ μκ³ , (r, c)λ rν cμ΄μ μλ―Έ
κ΅μ€μ κ°μ₯ μΌμͺ½ μ μΉΈμ (1, 1)μ΄κ³ , κ°μ₯ μ€λ₯Έμͺ½ μλ« μΉΈμ (N, N)
μ μλμ νμμ μμλ₯Ό μ νκ³ , κ° νμμ΄ μ’μνλ νμ 4λͺ λ λͺ¨λ μ‘°μ¬
κ·μΉμ μ΄μ©ν΄ μ ν΄μ§ μμλλ‘ νμμ μ리λ₯Ό μ νκΈ°
ν μΉΈμλ νμ ν λͺ μ μλ¦¬λ§ μμ μ μκ³ , r1 - r2| + |c1 - c2| = 1μ λ§μ‘±νλ λ μΉΈμ΄ (r1, c1)κ³Ό (r2, c2)λ₯Ό μΈμ νλ€
1) λΉμ΄μλ μΉΈ μ€μμ μ’μνλ νμμ΄ μΈμ ν μΉΈμ κ°μ₯ λ§μ μΉΈμΌλ‘ μ리λ₯Ό μ νλ€
2) 1μ λ§μ‘±νλ μΉΈμ΄ μ¬λ¬ κ°μ΄λ©΄, μΈμ ν μΉΈ μ€μμ λΉμ΄μλ μΉΈμ΄ κ°μ₯ λ§μ μΉΈμΌλ‘ μ리λ₯Ό μ νλ€
3) 2λ₯Ό λ§μ‘±νλ μΉΈλ μ¬λ¬ κ°μΈ κ²½μ°μλ νμ λ²νΈκ° κ°μ₯ μμ μΉΈμΌλ‘,
κ·Έλ¬ν μΉΈλ μ¬λ¬ κ°μ΄λ©΄ μ΄μ λ²νΈκ° κ°μ₯ μμ μΉΈμΌλ‘ μ리λ₯Ό μ νλ€
νμμ λ§μ‘±λλ₯Ό ꡬν΄μΌ νλ€
νμμ λ§μ‘±λλ μ리 λ°°μΉκ° λͺ¨λ λλ νμ ꡬν μ μλ€
κ·Έ νμκ³Ό μΈμ ν μΉΈμ μμ μ’μνλ νμμ μλ₯Ό ꡬν΄μΌ νλ€
κ·Έ κ°μ΄ 0μ΄λ©΄ νμμ λ§μ‘±λλ 0, 1μ΄λ©΄ 1, 2μ΄λ©΄ 10, 3μ΄λ©΄ 100, 4μ΄λ©΄ 1000
νμμ λ§μ‘±λμ μ΄ ν©μ ꡬν΄λ³΄μ
첫째 μ€μ Nμ΄ μ£Όμ΄μ§λ€
λμ§Έ μ€λΆν° N2κ°μ μ€μ νμμ λ²νΈμ κ·Έ νμμ΄ μ’μνλ νμ 4λͺ μ λ²νΈκ° ν μ€μ νλμ© μ μλμ΄ μ리λ₯Ό μ ν μμλλ‘ μ£Όμ΄μ§λ€
νμμ λ²νΈλ μ€λ³΅λμ§ μμΌλ©°, μ΄λ€ νμμ΄ μ’μνλ νμ 4λͺ μ λͺ¨λ λ€λ₯Έ νμ
νμμ λ²νΈ, μ’μνλ νμμ λ²νΈλ N2λ³΄λ€ μκ±°λ κ°μ μμ°μ
# κ΅μ€μ N×N ν¬κΈ°μ 격μ
n = int(input())
# νκ΅μ λ€λλ νμμ μλ N^2λͺ
p = n * n
classroom = [[0] * n for _ in range(n)]
# κ° νμ μΈλ±μ€μ λ§λ μ’μνλ μ¬λμ μ μ₯
like_room = [[] for _ in range(p + 1)]
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
for _ in range(p) :
# νμμ λ²νΈμ κ·Έ νμμ΄ μ’μνλ νμ 4λͺ
μ λ²νΈ
array = list(map(int, input().split()))
# κ° νμ μΈλ±μ€μ λ§λ μ’μνλ μ¬λμ μ μ₯
like = array[1:]
# νμμ λ²νΈ λ£μΌλ©΄ κ·Έκ±°μ λ§λ μ’μνλ νμ 4λͺ
λμ΄
like_room[array[0]] = like
if p == 0 :
classroom[1][1] = array[0]
continue
temp = []
for i in range(n) :
for j in range(n) :
sum_like, sum_empty = 0, 0
if classroom[i][j] != 0 :
continue
for k in range(4) :
nx = i + dx[k]
ny = j + dy[k]
if nx < 0 or nx > n - 1 or ny < 0 or ny > n - 1 :
continue
# ν΄λΉ μ리μμ μΈμ ν κ³³μ μ’μνλ νμμμΌλ©΄ +1
if classroom[nx][ny] in like :
sum_like += 1
# μΈμ ν κ³³μ΄ λΉ κ²½μ°μΌ λ +1
if classroom[nx][ny] == 0 :
sum_empty += 1
# sum_like, sum_empty, (i,j => ν΄λΉ ν,μ΄κ°)
temp.append((sum_like, sum_empty, (i, j)))
# μ’μνλ μ¬λ μ λ§μ μΉΈ > λΉ μΉΈ μ¬λ¬κ° > ν μ μ κ³³ > μ΄ μ μ κ³³
temp.sort(key = lambda x : (-x[0], -x[1], x[2])) # -λ₯Ό λΆμ΄λ©΄, νμ¬μ λ°λλ‘ μ λ ¬ (λ΄λ¦Όμ°¨μ)
# classroom 리μ€νΈμ ν΄λΉ ν, μ΄μ νμ λ²νΈλ‘ λ³κ²½
classroom[temp[0][2][0]][temp[0][2][1]] = array[0]
sum_answer = 0
for i in range(n) :
for j in range(n) :
answer = 0
# # νλνλ μΈμ μ§μμ μΌλ§λ μ’μνλ νμμ΄ λ°°μΉλμλμ§ νμΈ
for k in range(4) :
nx = i + dx[k]
ny = j + dy[k]
if nx < 0 or nx > n - 1 or ny < 0 or ny > n - 1 :
continue
if classroom[nx][ny] in like_room[classroom[i][j]] :
answer += 1
continue
if answer != 0 :
# νμμ λ§μ‘±λλ₯Ό κ³μ°
sum_answer += (10 ** (answer -1))
print(sum_answer)
μμ μ λ ₯
3
4 2 5 1 7
3 1 9 4 5
9 8 1 2 3
8 1 9 3 4
7 2 3 4 8
1 9 2 5 7
6 5 2 3 4
5 1 9 2 8
2 9 3 1 4
μμ μΆλ ₯
54
γ γ μ¬λ°λΉ ^^
κ°μ¬ν©λλ€!
728x90
λ°μν