https://www.acmicpc.net/problem/1012
1012번: 유기농 배추
차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에
www.acmicpc.net

import sys
def in_to_adj_dic():
cabbage_xy_dic, cabbage_adj_dic = dict(), dict()
row, column, cabbage_cnt = map(int, sys.stdin.readline().rstrip().split())
# dfs하기 위해 인접 노드 딕셔너리 만들기
for _ in range(cabbage_cnt):
x, y = map(int, sys.stdin.readline().rstrip().split())
cabbage_xy_dic[(x,y)] = True
for xy in cabbage_xy_dic:
tm_adj_list = []
if cabbage_xy_dic.get((xy[0]+1,xy[1]), False): tm_adj_list.append((xy[0]+1,xy[1]))
if cabbage_xy_dic.get((xy[0]-1,xy[1]), False): tm_adj_list.append((xy[0]-1,xy[1]))
if cabbage_xy_dic.get((xy[0],xy[1]+1), False): tm_adj_list.append((xy[0],xy[1]+1))
if cabbage_xy_dic.get((xy[0],xy[1]-1), False): tm_adj_list.append((xy[0],xy[1]-1))
cabbage_adj_dic[xy] = tm_adj_list
return cabbage_adj_dic, cabbage_xy_dic
def dfs(graph, start, coor_dic):
result, visit = set(), []
visit.append(start)
while visit:
node = visit.pop()
if node not in result:
result.add(node)
visit.extend(graph[node])
coor_dic.pop(node,0)
return result
if __name__ == '__main__':
test_case = int(input())
total = []
for _ in range(test_case):
result,sol = [],[]
adj_dic, coor_dic = in_to_adj_dic()
while coor_dic:
tm = coor_dic.popitem()
sol = dfs(adj_dic, tm[0], coor_dic)
result.append(len(sol))
total.append(len(result))
for t in total:
print(t)
'백준 & 프로그래머스' 카테고리의 다른 글
백준.적록색약.10026.py (0) | 2023.09.19 |
---|---|
백준.아기 상어2.17086.py (0) | 2023.09.19 |
백준.영역 구하기.2583.py (0) | 2023.09.18 |
백준.바이러스.2606.py (0) | 2023.09.15 |
백준.등수 구하기.1205.py (0) | 2023.09.13 |
댓글