솔직히 문제가 뭐라고 하는지 정말 하나도 모르겠어서 그거 때매 헤맸다.
아니 나는 상하좌우 배추가 있어야지 지렁이를 심을 수 있다고 생각했는데,, 그게 아니더라
그냥 이어져있으면 배추를 심을 수 있다는 거였담.
이 코드는 배추밭의 상태를 입력받고, 인접한 배추뭉치들을 찾아내는 알고리즘입니다.
입력:
bfs 함수:
주요 알고리즘:
결과 출력:
이 알고리즘은 재귀적인 방식으로 동작하며, 모든 배추뭉치를 찾아내기 위해 인접한 위치를 탐색합니다.
시간 복잡도
공간 복잡도
import sys
sys.setrecursionlimit(10**6) ### 재귀 깊이 한계 바꾸기
n = int(input())
for k in range(0, n):
n, m, num = map(int, input().split(' '))
cabbage_table = []
for i in range(0, num):
x, y = map(int, input().split(' '))
cabbage_table.append([x, y])
def bfs(x, y):
cabbage_table.remove([x, y])
a, b, c, d = [x + 1, y], [x - 1, y], [x, y + 1], [x, y - 1]
if a in cabbage_table:
bfs(a[0], a[1])
if b in cabbage_table:
bfs(b[0], b[1])
if c in cabbage_table:
bfs(c[0], c[1])
if d in cabbage_table:
bfs(d[0], d[1])
cnt = 0
while len(cabbage_table) != 0:
cnt += 1
x, y = cabbage_table[0][0], cabbage_table[0][1]
bfs(x, y)
print(cnt)
나는 구현하면서 리스트를 써야하는지 튜플을 써야하는지 암튼 자료구조 측면에서 뭐가 좋은지 고민이 많았다.
복습해야겠다..
이 경우에는 주어진 배추의 위치를 저장하는 자료구조로 리스트를 사용하는 것이 더 적합합니다. 이유는 다음과 같습니다:
변경 가능성:
탐색:
따라서 이 경우에는 배추의 위치를 저장하는 자료구조로 리스트를 사용하는 것이 더 적합합니다.
import sys
sys.setrecursionlimit(10**6) ### 재귀 깊이 한계 바꾸기
이거 추가하니까 에러가 안났다. 뭐임.
Name Error 난 이유는 import sys 안해서 그랬다.