본문 바로가기

코딩 테스트/DFS + BFS6

[백준 21609번] 상어 중학교 문제 풀이 먼저 문제를 이해해보자. 블록 그룹은 연결된 블록의 집합이다. 그룹에는 일반 블록이 적어도 하나 있어야 하며, 일반 블록의 색은 모두 같아야 한다. 검은색 블록은 포함되면 안 되고, 무지개 블록은 얼마나 들어있든 상관없다. 그룹에 속한 블록의 개수는 2보다 크거나 같아야 하며, 임의의 한 블록에서 그룹에 속한 인접한 칸으로 이동해서 그룹에 속한 다른 모든 칸으로 이동할 수 있어야 한다. 블록 그룹의 기준 블록은 무지개 블록이 아닌 블록 중에서 행의 번호가 가장 작은 블록, 그러한 블록이 여러개면 열의 번호가 가장 작은 블록이다. → 블록 그룹의 구성 블록 : 일반 블록 1개이상(단, 색은 모두 같아야 함) / 검은색 블록 X, 무지개 블록 개수 상관 없음 → 블록의.. 2023. 10. 29.
[백준 1012번] 유기농 배추 문제 풀이 이 문제는 X, Y 가 바뀌어 있어 헷갈렸으나, DFS 문제인것을 파악하는 것은 쉬웠다. 문제를 풀때 입출력은 동일했으나, 계속 런타임 에러가 떴는데 sys.setrecursionlimit(10**6) 를 붙여 해결했다. sys.setrecursionlimit(10**6) 은 파이썬의 기본 재귀 깊이 함수가 1000으로 얕아 런타임 에러가 뜰 때, 재귀 깊이를 늘려주기 위한 방법이다. import sys sys.setrecursionlimit(10000) readline = sys.stdin.readline n = int(readline()) def dfs(x,y): if x=N or y=M: return False if arr[x][y] == 1: a.. 2023. 9. 9.