μμ μμ
π λ¬Έμ
λ¬Έμ
μ¬λλ°©μ¬μ²μμλ λ§μ λΉκ° λ΄λ¦¬λ μ₯λ§μ² μ λλΉν΄μ λ€μκ³Ό κ°μ μΌμ κ³ννκ³ μλ€.
λ¨Όμ μ΄λ€ μ§μμ λμ΄ μ 보λ₯Ό νμ νλ€.
κ·Έ λ€μμ κ·Έ μ§μμ λ§μ λΉκ° λ΄λ Έμ λ
λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ΄ μ΅λλ‘ λͺ κ°κ° λ§λ€μ΄ μ§λ μ§λ₯Ό μ‘°μ¬νλ €κ³ νλ€.
μ΄λ, λ¬Έμ λ₯Ό κ°λ¨νκ² νκΈ° μνμ¬,
μ₯λ§μ² μ λ΄λ¦¬λ λΉμ μμ λ°λΌ μΌμ ν λμ΄ μ΄νμ λͺ¨λ μ§μ μ λ¬Όμ μ κΈ΄λ€κ³ κ°μ νλ€.μ΄λ€ μ§μμ λμ΄ μ 보λ νκ³Ό μ΄μ ν¬κΈ°κ° κ°κ° NμΈ 2μ°¨μ λ°°μ΄ ννλ‘ μ£Όμ΄μ§λ©°
λ°°μ΄μ κ° μμλ ν΄λΉ μ§μ μ λμ΄λ₯Ό νμνλ μμ°μμ΄λ€.
μλ₯Ό λ€μ΄, λ€μμ N=5μΈ μ§μμ λμ΄ μ 보μ΄λ€.
μ΄μ μμ κ°μ μ§μμ λ§μ λΉκ° λ΄λ €μ λμ΄κ° 4 μ΄νμΈ λͺ¨λ μ§μ μ΄ λ¬Όμ μ κ²Όλ€κ³ νμ.
μ΄ κ²½μ°μ λ¬Όμ μ κΈ°λ μ§μ μ νμμΌλ‘ νμνλ©΄ λ€μκ³Ό κ°λ€.λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ΄λΌ ν¨μ λ¬Όμ μ κΈ°μ§ μλ μ§μ λ€μ΄ μ, μλ, μ€λ₯Έμͺ½ νΉμ μΌμͺ½μΌλ‘ μΈμ ν΄ μμΌλ©°
κ·Έ ν¬κΈ°κ° μ΅λμΈ μμμ λ§νλ€.
μμ κ²½μ°μμ λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ 5κ°κ° λλ€
(κΌμ§μ μΌλ‘λ§ λΆμ΄ μλ λ μ§μ μ μΈμ νμ§ μλλ€κ³ μ·¨κΈνλ€).λν μμ κ°μ μ§μμμ λμ΄κ° 6μ΄νμΈ μ§μ μ λͺ¨λ μ κΈ°κ² λ§λλ λ§μ λΉκ° λ΄λ¦¬λ©΄
λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ μλ κ·Έλ¦Όμμμ κ°μ΄ λ€ κ°κ° λ¨μ νμΈν μ μλ€.
μ΄μ κ°μ΄ μ₯λ§μ² μ λ΄λ¦¬λ λΉμ μμ λ°λΌμ λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ κ°μλ λ€λ₯΄κ² λλ€.
μμ μμ κ°μ μ§μμμ λ΄λ¦¬λ λΉμ μμ λ°λ₯Έ λͺ¨λ κ²½μ°λ₯Ό λ€ μ‘°μ¬ν΄ 보면
λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ κ°μ μ€μμ μ΅λμΈ κ²½μ°λ 5μμ μ μ μλ€.μ΄λ€ μ§μμ λμ΄ μ λ³΄κ° μ£Όμ΄μ‘μ λ,
μ₯λ§μ² μ λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ μ΅λ κ°μλ₯Ό κ³μ°νλ νλ‘κ·Έλ¨μ μμ±νμμ€.μ λ ₯
첫째 μ€μλ μ΄λ€ μ§μμ λνλ΄λ 2μ°¨μ λ°°μ΄μ νκ³Ό μ΄μ κ°μλ₯Ό λνλ΄λ μ Nμ΄ μ λ ₯λλ€.
Nμ 2 μ΄μ 100 μ΄νμ μ μμ΄λ€.
λμ§Έ μ€λΆν° Nκ°μ κ° μ€μλ 2μ°¨μ λ°°μ΄μ 첫 λ²μ§Έ νλΆν° Nλ²μ§Έ νκΉμ§ μμλλ‘ ν νμ© λμ΄ μ λ³΄κ° μ λ ₯λλ€.
κ° μ€μλ κ° νμ 첫 λ²μ§Έ μ΄λΆν° Nλ²μ§Έ μ΄κΉμ§ Nκ°μ λμ΄ μ 보λ₯Ό λνλ΄λ μμ°μκ°
λΉ μΉΈμ μ¬μ΄μ λκ³ μ λ ₯λλ€.
λμ΄λ 1μ΄μ 100 μ΄νμ μ μμ΄λ€.μΆλ ₯
첫째 μ€μ μ₯λ§μ² μ λ¬Όμ μ κΈ°μ§ μλ μμ ν μμμ μ΅λ κ°μλ₯Ό μΆλ ₯νλ€.
π§ νμ΄
νμ΄
# [νμ΄μ¬] λ°±μ€ 2468λ² λ¬Έμ : μμ μμ
from collections import deque # deque λΆλ¬μ€κΈ°
n = int(input()) # n μ
λ ₯ λ° ν λΉ
land = [list(map(int, input().split())) for _ in range(n)] # land μ
λ ₯ λ° ν λΉ
dx = [1, -1, 0, 0] # μ’μ° μ΄λ
dy = [0, 0, 1, -1] # μν μ΄λ
Q = deque() # BFSλ₯Ό μν λΉ ν ν λΉ
a_list = [] # μμμ κ°―μλ₯Ό λ΄κΈ° μν λΉ a_list ν λΉ
for k in range(0, 101): # 0λΆν° 100κΉμ§μ λ¬Όλμ΄κΉμ§ λ°λ³΅
check = [[0] * n for _ in range(n)] # μ μ κΈ΄ λ
μ λ°©λ¬Έ μ¬λΆλ₯Ό μν λΉ λ°°μ΄ ν λΉ
cnt = 0 # λ
μ κ°―μ 0μΌλ‘ μ΄κΈ°ν λ° ν λΉ
for i in range(n):
for j in range(n):
if land[i][j] > k and check[i][j] != -1: # λ
μ΄ λ¬Όλμ΄λ³΄λ€ λμΌλ©°, λ°©λ¬Ένμ§ μμ κ²½μ°
check[i][j] = -1 # ν΄λΉ λ
μ λ°©λ¬Έν κ²μΌλ‘ λ°κΏ (-1)
Q.append((i, j)) # Qμ ν΄λΉ μ’ν κ° μΆκ°
while Q: # Qμ μμκ° μμ κ²½μ°, κ³μ λ°λ³΅
x, y = Q.popleft() # Qμ μμλ₯Ό λΉΌλ΄μ΄ x, yμ κ°κ° ν λΉ
for l in range(4): # μ, ν, μ’, μ°λ§νΌ λ°λ³΅
nx = dx[l] + x
ny = dy[l] + y
if 0 <= nx < n and 0 <= ny < n and check[nx][ny] != -1 and land[nx][ny] > k: # nxμ nyκ° μμ μμ μμΌλ©΄μ, λ°©λ¬Ένμ§ μμκ³ , ν΄λΉ λ
μ΄ λ¬Όλμ΄λ³΄λ€ λμ λ,
check[nx][ny] = -1 # ν΄λΉ λ
μ λ°©λ¬Έν κ²μΌλ‘ λ°κΏμ€
Q.append((nx, ny)) # Qμ nx, ny μΆκ°
else:
cnt += 1 # Qμ μμκ° μμΌλ©΄, λ
μ κ°―μ 1 μΆκ°
a_list.append(cnt) # κ° λ¬Όλμ΄λ§λ€ λ
μ μ΅μ’
κ°―μ a_listμ μΆκ°
print(max(a_list)) # a_listμ μ΅λκ° μΆλ ₯
'π§© Algorithm > π¨ Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[νμ΄μ¬] λ°±μ€ 1874λ² λ¬Έμ : μ€ν μμ΄ (0) | 2022.08.27 |
---|---|
[νμ΄μ¬] λ°±μ€ 3135λ² λ¬Έμ : λΌλμ€ (0) | 2022.08.26 |
[νμ΄μ¬] λ°±μ€ 2667λ² λ¬Έμ : λ¨μ§λ²νΈλΆμ΄κΈ° (0) | 2022.08.26 |
[νμ΄μ¬] λ°±μ€ 2178λ² λ¬Έμ : λ―Έλ‘ νμ (0) | 2022.08.26 |
[νμ΄μ¬] λ°±μ€ 10773λ² λ¬Έμ : μ λ‘ (0) | 2022.08.09 |