반응형
그래프 탐색과 시뮬레이션을 혼합한 문제입니다.
문제
풀이
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 과 '.'로 바꿔주기
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스/Lv2] 땅따먹기(동적 프로그래밍) (0) | 2023.09.19 |
---|---|
[BOJ/동적 프로그래밍] 14501 퇴사 (0) | 2023.09.19 |
[구름톤 챌린지] Day 19 - 대체 경로(그래프 최단 경로) (0) | 2023.09.12 |
[구름톤 챌린지] Day 18 - 중첩 점(동적 프로그래밍) (0) | 2023.09.12 |
[구름톤 챌린지] Day 17 - 통신망 분석(DFS/BFS) (0) | 2023.09.12 |