알고리즘

[구름톤 챌린지 종료] Day 20 - 연결 요소 제거하기(그래프 탐색)

motti 2023. 9. 12. 18:19
반응형

https://level.goorm.io/exam/195702/%EC%97%B0%EA%B2%B0-%EC%9A%94%EC%86%8C-%EC%A0%9C%EA%B1%B0%ED%95%98%EA%B8%B0/quiz/1

 

구름LEVEL

난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.

level.goorm.io

그래프 탐색과 시뮬레이션을 혼합한 문제입니다.


문제


풀이

from collections import deque

n,k,q = map(int,input().split())

arr = [list(input()) for _ in range(n)]

visited = [ [0]*(n) for _ in range(n)]
dq = deque()

dx = [-1,1,0,0]
dy = [0,0,-1,1]

for _ in range(q):
	x,y,alp = input().split()

	x = int(x) - 1
	y = int(y) - 1
	visited = [ [0]*(n) for _ in range(n)]
	arr[x][y] = alp
	dq.append((x,y))
	alp_list = []
	while dq:
		x,y = dq.pop()
		visited[x][y] = 1
		alp_list.append((x,y))
		for h in range(len(dx)):
			nx = x+dx[h]
			ny = y+dy[h]
			if 0<= nx < n and 0<=ny < n:
				if visited[nx][ny] == 0 and arr[nx][ny] == alp:
					dq.append((nx,ny))
					visited[nx][ny] = 1

	if len(alp_list)>=k:
		for a,b in alp_list:
			arr[a][b] = '.'
	else:
		for a,b in alp_list:
			arr[a][b] = alp

			
for i in range(n):
	print()
	for j in range(n):
		print(arr[i][j],sep ='',end='')

1. 상하좌우 방향으로 배열을 탐색하면서 조건에 맞는 알파벳이 나오면 cnt+=1 과 '.'로 바꿔주기


 

반응형