πλ¬Έμ νμνκΈ°
- 5x5 ν¬κΈ°μ μ«μν
- κ°κ°μ μΉΈμ 0~9 μ€ νλμ μ«μκ° μ νμμ
- μ«μνμ μμμ μμΉμμ μμν΄ μΈμ ν λ€ λ°©ν₯μΌλ‘ λ€μ―λ² μ΄λν΄ λ§λ€ μ μλ μλ‘ λ€λ₯Έ μ¬μ― μ리 μμ κ°μ ꡬνκΈ°
μ«μνμ ν¬κΈ°κ° 5x5λ‘ κ³ μ λμ΄ μμΌλ―λ‘ λͺ¨λ κ²½μ°μ μκ° μΌλ§μΈμ§ μ½κ² ꡬν μ μλ€. ν΄λΉ λ¬Έμ μ κ²½μ° μ²μ μμμ μ΄ μ΄ 25κ³³μ΄ λ μ μκ³ , κ° μμμ μμ λ€ λ°©ν₯μΌλ‘ μ΄λν μ μλλ° 5ν μ΄λν΄μΌ νλ―λ‘ μ΄ κ²½μ°μ μλ 25x4^5 (100x2^8) = 25600μ΄λ€(κ²½κ³ λ°κΉ₯μΌλ‘ μ΄λνλ κ²μ΄ ν¬ν¨λμμΌλ―λ‘ μ€μ κ²½μ°μ μλ λ μ λ€). λ°λΌμ λͺ¨λ κ²½μ°λ₯Ό νμ(λΈλ£¨νΈν¬μ€)ν΄λ μΆ©λΆν μ ν μκ° λ΄μ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ€.
πμ½λ μ€κ³νκΈ°
- board μ΄μ€ 리μ€νΈμ μ«μνμ μ 보λ₯Ό μ λ ₯λ°λλ€.
- λ§λ€μ΄μ§ μλ₯Ό μ μ₯νκΈ° μν μ§ number_setμ μ΄κΈ°ννλ€.
- νΉμ ν μΉΈμμ μΈμ ν λ€λ₯Έ μΉΈμΌλ‘ μ΄λνλ ν¨μ move(x, y, current_num)μ μ μνλ€.
- μ΄μ€ forλ¬Έμ ν΅ν΄ boardμ κ° μΉΈμ λλ©΄μ move ν¨μλ₯Ό μ¬κ· νΈμΆνμ¬ μ΄ 5λ² μ΄λνμλ λμ¨ μ«μλ₯Ό number_setμ μΆκ°νλ€.
- number_setμ ν¬κΈ°λ₯Ό κ΅¬ν΄ μ λ΅μ μΆλ ₯νλ€.
πμ λ΅ μ½λ
delta = [(0,1),(0,-1),(1,0),(-1,0)]
def move(x, y, current_num):
if len(current_num) == 6:
number_set.add(current_num)
return
for dx, dy in delta:
nx, ny = x+dx, y+dy
if 0 <= nx < 5 and 0 <= ny < 5:
move(nx, ny, current_num+board[nx][ny])
number_set = set()
board = [list(input().split()) for _ in range(5)]
for i in range(5):
for j in range(5):
move(i, j, '')
print(len(number_set))
728x90