λ¬Έμ π
NxN ν¬κΈ°μ λ―Έλ‘μμ μΆλ°μ§μμ λͺ©μ μ§μ λμ°©νλ κ²½λ‘κ° μ‘΄μ¬νλμ§ νμΈνλ νλ‘κ·Έλ¨μ μμ±νμμ€. 4
λμ°©ν μ μμΌλ©΄ 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. λ―Έλ‘
# μΆλ°μ§μμ λͺ©μ μ§μ λμ°©νλ κ²½λ‘κ° μ‘΄μ¬νλμ§ νμΈ
# μ¬λ°© νμ
dx = [0, 1, 0, -1] # λ²μ μ λλ‘ νμΈ
dy = [-1, 0, 1, 0]
def miro(i, j):
global result # κ²°κ³Όκ° μ μλ³μλ‘ μ€μ ν΄μ£ΌκΈ°
visited[i][j] = True # λ°©λ¬Έν κ³³ 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}')
λ΄κ° μ λͺ» νμλ μ ...
1. μ¬λ°© νμ λ²μ νμΈ!!! : μλͺ» μ μλλμ.. κΌ νμΈνκ³ μ κΈ°;;;
2. Runtime error : strip()μ μ¬μ©ν΄ μ£Όμ΄μΌ νλ€κ³ κ·Έλ¬λλ°...
μ°λ¦¬ λμλ μ 보μ΄μ§λ§ \n μ΄ ν¬ν¨ λμ΄ μμμ§λ λͺ¨λ₯Έλ€κ³ νλ€μ....
κ·Έλ¦¬κ³ input()μ μμμ 곡백μ μ κ±°ν΄μ£Όμ§λ§
sysλ₯Ό μ¬μ©ν λλ κ·Έλ° κΈ°λ₯μ΄ μμ΄μsys.stdin.readline().strip() κ°μ΄ 무쑰건 μ¨μ€μΌ νλ°μ!! π΅π«
μ°Έκ³ ν¨λ©΄ μ’μ κ°λ λ€ βοΈ
1) νμ
: λ§μ μμ λ°μ΄ν° μ€μμ μνλ λ°μ΄ν°λ₯Ό μ°Ύλ κ³Όμ
ex) DFS, BFS
2) DFS(κΉμ΄ μ°μ νμ)
- μ€ν μλ£κ΅¬μ‘°μ κΈ°μ΄νλ€..
- μ€μ¬λ‘λ μ€ν보λ€λ μ¬κ· ν¨μλ₯Ό μ΄μ©νμ¬ κ°κ²°νκ²(?) ꡬνν μ μλ€
- μκ° λ³΅μ‘λ : O(N)
# dfs & μ¬κ· ν¨μ
def dfs(v): # v : μμμ
global visited, graphs # ν¨μ μμμ λ§λ€μ΄μ€κ² μλλΌ μμ μ±μ μν΄ μ μλ³μλ‘ μ€μ ν΄μ£Όμλ€
visited[v] = True
for i in graphs[v]: # μΈμ ν΄ μλ κ³³ μ€μ
if not visited[i]: # λ°©λ¬Έμ μνλ€λ©΄
dfs(i) # κ·Έ κ³³μ νμ!!
else:
continue # μ΄λ―Έ λ°©λ¬Έν κ³³ ν¨μ€ # μ΄ λΆλΆ μ μ μ΄μ€λ λλ€
graph = [] # κ·Έλνλ₯Ό νννλ μΈμ 리μ€νΈ(μΈμ νλ ¬ μ΄λ €μ γ
γ
)
visited = [] # κ° λ
Έλκ° λ°©λ¬Έλ μ 보λ₯Ό νννλ 1 μ°¨μ 리μ€νΈ(true, flase/ 0,1λ‘ κ΅¬λ¬Έ)
dfs(0)
=> κ²½λ‘κ° μλμ§ νμΈν λλ dfs λ₯Ό μ¬μ©νλ κ²μ΄ λ μ’λ€κ³ νλ€μ..
'algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λ°±μ€ 1193. λΆμ μ°ΎκΈ° (1) | 2023.08.28 |
---|---|
λ°±μ€ 24444. μκ³ λ¦¬μ¦ μμ - λλΉ μ°μ νμ 1 (BFS) (0) | 2023.08.19 |
swea 4874. Forth (νμ νκΈ°λ² κ³μ°νκΈ°) (0) | 2023.08.19 |
λ°±μ€ 1920. μμ°ΎκΈ° (set(), Binary Search) (0) | 2023.08.15 |
swea 4875. λ―Έλ‘(dfs & λΈν νμ) (0) | 2023.08.15 |