1012 : 유기농배추

서희찬·2021년 10월 6일
0

백준

목록 보기
58/105

문제

코드

# import sys 
# input = sys.stdin.readline
# sys.setrecursionlimit(10**4)


# # def bfs(x,y):
# #     queue =[[x,y]]
# #     while queue:
# #         a,b = queue[0][0],queue[0][1]
# #         del queue[0]
# #         for i in range(4):
# #             cx = a+dx[i]
# #             cy = b+dy[i]
# #             if 0<=cx<n  and 0<=cy<m and graph[cx][cy]==1:
# #                 graph[cx][cy]=0
# #                 queue.append([cx,cy])

# def dfs(x,y):
#     graph[x][y]=0
#     for i in range(4):
#         cx = x+dx[i]
#         cy = y+dy[i]
#         if 0<=cx<n  and 0<=cy<m and graph[cx][cy]==1: #방문안한 곳 
#             dfs(cx,cy)

# test = int(input()) # computer 

# #방향벡터 
# dx = [1,-1,0,0]
# dy = [0,0,-1,1]


# for _ in range(test):
#     # n:세로 m:가로
#     m,n,k= map(int,input().split())
#     graph = [[0]*m for _ in range(n)]
#     cnt=0 #지렁지렁 
    
#     #배추
#     for i in range(k):
#         a,b = map(int,input().split())
#         graph[b][a]=1
#     for j in range(n):
#         for k in range(m):
#             if graph[j][k]==1:
#                 dfs(j,k)
#                 cnt+=1
#     print(cnt)

해설

DFS 또는 BFS를 이용하면 되는 문제이다.
DFS로 해결 후 BFS로 작성된 코드를 보았다.
이 문제의 접근법은 우선 행렬을 만든 후 하나씩 돌면서 1을 0으로 바꿔 주면 되는 것이다.
그렇게 한 무리가 0 이되면 다음 무리도 DFS를 통해서 0으로 만들어주면된다.
이렇게 2차원 배열을 쭈우우욱 돌면 되는 문제이다.

profile
부족한 실력을 엉덩이 힘으로 채워나가는 개발자 서희찬입니다 :)

0개의 댓글