9roomthon 20일차: 연결 요소 제거하기

PEA은하·2023년 9월 8일
post-thumbnail

Submitted Code

Python

def remove_connection(d, stack):
	y, x = stack[-1]
	dirs = [(1, 0), (-1, 0), (0, 1), (0, -1)]
	for dy, dx in dirs:
		ny, nx = y + dy, x + dx
		if ny in (-1, N) or nx in (-1, N):
			continue
		if table[ny][nx] == d:
			table[ny][nx] = '.'
			stack.append((ny, nx))
			remove_connection(d, stack)
	return

N, K, Q = map(int, input().split())
table = [['.'] * N for _ in range(N)]
for i in range(N):
	line = input()
	for j in range(N):
		table[i][j] = line[j]

for _ in range(Q):
	r, c, d = input().split()
	y, x = map(lambda k: int(k) - 1, (r, c))
	stack = [(y, x)]
	remove_connection(d, stack)
	if len(stack) < K:
		for yi, xi in stack:
			table[yi][xi] = d
	
for i in range(len(table)):
	print(''.join(table[i]))

K개 이상 요소를 반복하는 것보다 K개 미만인 요소를 2번 반복하는 것이 낫다고 판단했다.

0개의 댓글