| ๋ฌธ์ ๋ด์ฉ
๋ฟ์๋ฟ์ ๊ฒ์๊ณผ ์ ์ฌํ๊ฒ, K๊ฐ ์ด์์ ๊ฐ์ ์ซ์๊ฐ ์ฐ์ํด์ ๋ํ๋๋ฉด ํด๋น ๊ทธ๋ฃน์ด ๋์์ ํฐ์ง๋ฉฐ, ๊ทธ ์์ ์ซ์๋ค์ด ์๋๋ก ๋ด๋ ค์ค๊ฒ ๋๋ค. ๋ ์ด์ ํฐ์ง ๊ทธ๋ฃน์ด ์์ ๋์ ์ซ์ ๋ฐฐ์ด์ ์ถ๋ ฅํ๋ ๋ฌธ์
| ํ์ด
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10000)
# ์ฒดํฌ ๋ฐฐ์ด ์์ฑ์ฉ
def new_arr(N):
return [[0 for _ in range(10)] for _ in range(N)]
N, K = map(int, input().split())
M = [list(map(int, input().rstrip())) for _ in range(N)]
ck = new_arr(N)
ck2 = new_arr(N)
dx, dy = [1, 0, -1, 0], [0, -1, 0, 1]
# ๊ฐ์ ์ซ์ ๊ทธ๋ฃน๋ด ์ซ์ ๊ฐ์ ์ธ๊ธฐ
def dfs(x, y):
ck[x][y] = True
ret = 1 # ๊ทธ๋ฃน ๋ด ์ซ์ ์
# x,y ์ขํ ๊ธฐ์ค์ผ๋ก ๊น์ด ์ฐ์ ์ผ๋ก ์ฌ๋ฐฉ ์ฒดํฌ
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if nx < 0 or nx >= N or ny < 0 or ny >= 10:
continue
if ck[nx][ny] or M[x][y] != M[nx][ny]:
continue
ret += dfs(nx, ny)
return ret
# ๊ทธ๋ฃน ๋ด ์ซ์ ๋ชจ๋ ์ ๊ฑฐ(0์ผ๋ก)
def dfs2(x, y, val):
# dfs์ ๊ฐ์.
ck2[x][y] = True # ์ญ์ ํ ๋ ํ์ผํ ์ฒดํฌ ๋ฐฐ์ด. ์ซ์์ธ๋ ๊ฒ๊ณผ ๋ณ๊ฐ๋ก ์ญ์ ํ๋์ง ์ฌ๋ถ๋ ๋ฐ๋ก ์ฒดํฌ
M[x][y] = 0 # ์ญ์ ์ฒ๋ฆฌ
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if nx < 0 or nx >= N or ny < 0 or ny >= 10:
continue
if ck2[nx][ny] or M[nx][ny] != val:
continue
dfs2(nx, ny, val)
# Map๋ด์์ 0์ด ์๋ ์ซ์ ๊ทธ๋ฃน ์๋๋ก ๋ด๋ฆฌ๊ธฐ
def down():
# ์ด์ ๊ธฐ์ค์ผ๋ก 0์ด ์๋ ์ซ์ ํ์ธ
for i in range(10):
tmp = []
for j in range(N):
if M[j][i] != 0:
tmp.append(M[j][i])
# ์ซ์ ์์ชฝ์ 0์ผ๋ก ์ฑ์ฐ๊ธฐ
for j in range(N - len(tmp)):
M[j][i] = 0
# tmp์ ์ ์ฅ๋ valid ์ซ์๋ก ์ฑ์ฐ๊ธฐ
for j in range(N - len(tmp), N):
M[j][i] = tmp[j - (N - len(tmp))]
# ๋งต์ ๋ํด ๋์ด์ ๋ณ๊ฒฝ์ฌํญ์ด ์์ ๋๊น์ง ๋ฐ๋ณต๋ฌธ ์คํ
while True:
exist = False
# ๋ฐ๋ณต๋ฌธ ์๋ก ๋๋๋ง๋ค ๊ฐฑ์
ck = new_arr(N)
ck2 = new_arr(N)
for i in range(N):
for j in range(10):
if ck[i][j] or M[i][j] == 0:
continue
res = dfs(i, j) # ๊ทธ๋ฃน ๋ด ์ซ์ ์ธ๊ธฐ
if res >= K:
dfs2(i, j, M[i][j]) # ํ์ฌ ์์น๋ถํฐ ํด๋น ์ซ์๊ทธ๋ฃน ๋ชจ๋ ์ ๊ฑฐ
exist = True
# Map ํ ๋ฐ๊พธ ๋์์ ๋ ๋์ด์ ๋ณ๊ฒฝ์ฌํญ์ด ์์ผ๋ฉด ๋ฐ๋ณต๋ฌธ ์ข
๋ฃ
if not exist:
break
# ์ซ์์นธ ๋ด๋ฆฌ๊ธฐ
down()
for i in M:
print(''.join(map(str, i)))
| ๋๋์
๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํ์ด์ผํ๋ ์ง๋ ๊ฐ์ด ์ค๋๋ฐ ์์ง๋ ๊ตฌํ ์์ฒด๊ฐ ์ด๋ ต๊ณ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฐ๋ค. ๋น์ทํ ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ๊ฐ ํ์ด๋ด์ผ๊ฒ ๋ค.
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 1182 ๋ถ๋ถ์์ด์ ํฉ (0) | 2024.03.18 |
---|---|
[Python] ๋ฐฑ์ค 14502๋ฒ ์ฐ๊ตฌ์ (0) | 2024.03.17 |
[Python] ๋ฐฑ์ค 16769๋ฒ Mixing Milk (0) | 2024.01.25 |
[Python] ๋ฐฑ์ค 9037๋ฒ The candy war (0) | 2024.01.22 |
[Python] ๋ฐฑ์ค 2110๋ฒ ๊ณต์ ๊ธฐ ์ค์น (2) | 2023.10.22 |