λ¬Έμ π€
NxN ν¬κΈ°μ λ―Έλ‘μμ μΆλ°μ§μμ λͺ©μ μ§μ λμ°©νλ κ²½λ‘κ° μ‘΄μ¬νλμ§ νμΈνλ νλ‘κ·Έλ¨μ μμ±νμμ€. λμ°©ν μ μμΌλ©΄ 1, μλλ©΄ 0μ μΆλ ₯νλ€.
μ£Όμ΄μ§ λ―Έλ‘ λ°μΌλ‘λ λκ° μ μλ€.
λ€μμ 5x5 λ―Έλ‘μ μμ΄λ€.
13101
10101
10101
10101
10021
λ§μ§λ§ μ€μ 2μμ μΆλ°ν΄μ 0μΈ ν΅λ‘λ₯Ό λ°λΌ μ΄λνλ©΄ 맨 μμ€μ 3μ λμ°©ν μ μλμ§ νμΈνλ©΄ λλ€.
[μ
λ ₯]
첫 μ€μ ν
μ€νΈ μΌμ΄μ€ κ°μ Tκ° μ£Όμ΄μ§λ€. 1<=T<=50
λ€μ μ€λΆν° ν μ€νΈ μΌμ΄μ€μ λ³λ‘ λ―Έλ‘μ ν¬κΈ° Nκ³Ό Nκ°μ μ€μ κ±Έμ³ λ―Έλ‘μ ν΅λ‘μ λ²½μ λν μ λ³΄κ° μ£Όμ΄μ§λ€. 0μ ν΅λ‘, 1μ λ²½, 2λ μΆλ°, 3μ λμ°©μ΄λ€. 5<=N<=100
[μΆλ ₯]
κ° μ€λ§λ€ "#T" (Tλ ν μ€νΈ μΌμ΄μ€ λ²νΈ)λ₯Ό μΆλ ₯ν λ€, κ³μ°κ²°κ³Όλ₯Ό μ μλ‘ μΆλ ₯νκ±°λ λλ ‘error’λ₯Ό μΆλ ₯νλ€.
λ΄ νπ¦·
# 4875. λ―Έλ‘
# μΆλ°μ§μμ λͺ©μ μ§μ λμ°©νλ κ²½λ‘κ° μ‘΄μ¬νλμ§ νμΈ
# λ§μ§λ§ μ€μ 2μμ μΆλ°, 0μΈ ν΅λ‘λ₯Ό λ°λΌ μ΄λνλ©΄ 맨 μμ€μ 3μ λμ°©νλμ§
# μ¬λ°© νμ
dx = [0, 1, 0, -1] # λ²μ μ λλ‘ νμΈ
dy = [-1, 0, 1, 0]
def miro(i, j):
global result # κ²°κ³Όκ° μ μλ³μλ‘ μ€μ ν΄μ£ΌκΈ°
visited[i][j] = True
for k in range(4):
di = i + dx[k]
dj = j + dy[k] # νλνλ μ κ²½μ¨μ μ κΈ°
if 0 <= di < N and 0 <= dj < N and not visited[di][dj]:
# νμμνκ³ 0μ΄λ©΄ μ¬κ·
if arr[di][dj] == 0:
miro(di, dj)
# 3 λμ°©νλ©΄ μ±κ³΅
elif arr[di][dj] == 3:
result = 1 # κ²°κ³Όκ° μ±κ³΅μΌλ‘ λ°κΎΈκΈ°
break
T = int(input())
for tc in range(1, T + 1):
N = int(input()) # λ―Έλ‘μ ν¬κΈ°
arr = [list(map(int, input().strip())) for _ in range(N)]
# λ°©λ¬Έ κ²μ¬
visited = [[False for _ in range(N)] for _ in range(N)]
result = 0 # κ²°κ³Όκ°
for i in range(N-1, -1, -1):
for j in range(N-1, -1, -1):
if arr[i][j] == 2:
miro(i, j) # ν¨μμ μμμ λ£μ΄μ£ΌκΈ°
print(f'#{tc} {result}')
λ²½μ΄ μλκ³³μ νΌν΄μ κ°μΌνλ€κ³ λΌκ³ λΌκ³ λΌνλ νΌμ μ΄λ¬κ³ μλ€κ°..
λκ° μ€λ μνμμ μ¬μ©ν(?) λΈν + dfsμμ λ°°μ΄ κ°λ λ€ + μ¬κ· λ€ μ°λ©΄ ν΄κ²°ν λ―(?)μΌλ‘ μκ°ν΄λ³΄μμ΅λλ€μ π€
μ€κ°μ μ€μν λΆλΆλ€ π΅π«
- λΈν λ²μ (μ·¨μ€ μ½λ©ν΄μ κ·Έλ°κ° μλͺ» μ μ;;;;
- dj = i + dk[k] (μμ μλͺ» μ μ....)
- μ λ ₯ λ°μ λ strip() μ¨μ£Όμ§ μμμ λ°νμμλ¬ λ°μ.... => μ¬μ€ μμ§λ μ λͺ¨λ₯΄κ² μ μμΈμ§...
strip()μ 곡백μ μ κ±°νλ©΄ λλκ±°μλμ??
split()μ μ μ μ΄μ£Όλ©΄ λλ€ μλκ°μ??
μμλ λ©μ§λΆμ λκΈ κΈ°λ€λ¦¬κ³ μκ² μ΅λλ€...
μ°Έκ³ ν¨λ©΄ μ’μ κ°λ λ€ βοΈ
1) λΈνλ₯Ό μ΄μ©ν 2μ°¨ λ°°μ΄ νμ
: 2μ°¨ λ°°μ΄μ ν μ’νμμ 4λ°©ν₯μ μΈμ λ°°μ΄ μμλ₯Ό νμνλ λ°©λ²(8λ°©λ κ°λ₯)
arr[0...N-1][0...N-1] # N * N λ°°μ΄
di = [0, 1, 0, -1] # ν, μ°, μ, μ’
dj = [1, 0, -1, 0]
for i in range(N):
for j in range(N): # μ¬κΈ°κΉμ§λ μ°λ¦¬κ° ννμλ μ΄μ°¨μ λ°°μ΄
for k in range(4): # λΈμ°¨λ₯Ό μ΄μ©
ni = i + di[k]
nj = j + dj[k]
if 0 <= ni < N and 0 <= nj < N: # λ²μμ μμ λ€μ΄μλ μΈλ±μ€λ©΄...
f(arr[ni][nj]) # μ΄ μ μ κΈ°μ€μΌλ‘ λν΄μ£Όλ κ°μλ₯Ό μΈμ£Όλ λ λμκ°λ 무κΆλ¬΄μ§ν λ¬Έμ λ€μ΄ λμ¬ μ μλ€
2) μ¬κ·λ₯Ό νμ©ν dfs
: μ¬κ·λ₯Ό νμ©ν¨μΌλ‘μ¨ μ½κ² dfsλ₯Ό ꡬνν μ μλ€(λ΄μ©μ μμ¬μ... μ΄ν΄νκΈ° νλ€μμ..)
def dfs(v):
global visited
# print(v, "-", end='')
visited[v] = True # μ΄κ±°μ ν΄λΉνλ©΄ μ§ν
# v λ
Έλμμ κ° μ μλ λ
Έλλ₯Ό νμΈ (μΈμ ν λ
Έλ)
for u in graphs[v]:
if visited[u] == True: # λ°©λ¬Έμ νλ€λ©΄
continue
# λ°©λ¬Έμ νμ§ μμλ€λ©΄ λ°©λ¬Έμ μ§ν
else: # uκ° visitedμμ λ€μ΄μμ§ μλ€λ©΄ uλ₯Ό λ€μ dfs ν΄μ£Όλ©΄ λλ€
dfs(u) # λͺ¨λ μμκ° λ€ λμκ°μ λͺ¨λ μμκ° νΈλ£¨λ‘ λ°λλ©΄ λλλ€.
'algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
swea 4874. Forth (νμ νκΈ°λ² κ³μ°νκΈ°) (0) | 2023.08.19 |
---|---|
λ°±μ€ 1920. μμ°ΎκΈ° (set(), Binary Search) (0) | 2023.08.15 |
[λ°±μ€/μ€ν] 9012. κ΄νΈ (μ§κΈμ§κΈ π π π ) (4) | 2023.08.10 |
[λ°±μ€ - λΈλ£¨νΈ ν¬μ€]19532. μνμ λΉλλ©΄κ°μμ λλ€ (2) | 2023.08.09 |
λ°±μ€ μ¬ν 10988 ν°λ¦°λ둬μΈμ§ νμΈνκΈ° (2) | 2023.07.28 |