-
[BOJ]백준 22352번: 항체 인식(Python)/BFSProblem Solving/BOJ(백준) 2021. 8. 4. 20:50
https://www.acmicpc.net/problem/22352
특정 좌표에서 BFS또는 DFS를 시행하여 같은 숫자인 칸을 전부 업데이트 시킨 뒤 주어진 배열과 같은지 검사하면 되는 간단한 BFS 문제
import sys from collections import deque def bfs(r, c, num): global origin, after, n, m dx=[1,0,-1,0] dy=[0,1,0,-1] visit=[[False for _ in range(m)] for _ in range(n)] o=origin[r][c] q=deque() q.append([r, c]) visit[r][c]=True while q: cur=q.pop() origin[cur[0]][cur[1]]=num for i in range(4): nr=cur[0]+dx[i] nc=cur[1]+dy[i] if not (nr>=0 and nr<n and nc>=0 and nc<m): continue if not visit[nr][nc] and origin[nr][nc]==o: q.append([nr, nc]) visit[nr][nc]=True def solution(n, m, origin, after): for i in range(n): for j in range(m): if origin[i][j]==after[i][j]: continue bfs(i,j,after[i][j]) for r in range(n): for c in range(m): if origin[r][c]!=after[r][c]: return "NO" return "YES" return "YES" input=sys.stdin.readline n,m=map(int,input().split()) origin = [] for _ in range(n): origin.append(list(map(int,input().split(" ")))) after = [] for _ in range(n): after.append(list(map(int,input().split(" ")))) print(solution(n, m, origin, after))
'Problem Solving > BOJ(백준)' 카테고리의 다른 글
[BOJ]백준 20160번: 야쿠르트 아줌마 야쿠르트 주세요(C++)/Dijkstra (0) 2021.08.09 [BOJ]백준 22114번: 창영이와 점프(C++)/DP (421) 2021.08.08 [BOJ]백준 20304번: 비밀번호 제작(Python)/Bitmask, BFS (477) 2021.08.04 [BOJ]백준 20058번: 마법사 상어와 파이어스톰(C++)/Simulation (0) 2021.07.31 [BOJ] 백준 22251번: 빌런 호석(C++)/BitMasking (0) 2021.07.24