dfs의 전형적인 방법으로 
1) 범위먼저 설정
2) 방문가능한지와 맞는 색인지 확인해보고, 
3) 앞뒤좌우에 있으면 cnt를 늘린다.
 
물론 i, j의 for loop로 돌려서 모두 찾아야지요~
 
이 문제를 풀면서 의문점
1. arr에 값을 넣을때 왜 다른가?
1) arr = [list(map(int, input().split())) for _ in range(7)] 
는 ok
2) 
for _ in range(7):
  arr = list(map(int, input().split()))
에서 arr[1][1]의 타잎값은 안나오지???
궁금해...
 
 
arr = [list(map(int, input().split())) for _ in range(7)] 
 
 
#for _ in range(7):
#  arr = list(map(int, input().split()))
 
#print(type(arr))
 
visited=[[0]*7 for _ in range(7)]
 
res=0
 
def dfs(x,y,arr,v,val):
  if x<0 or x>=7 or y<0 or y>=7:
    return 0
  cnt=0
  if v[x][y]==0 and arr[x][y] == val:
    v[x][y] = arr[x][y]
    cnt+=1
    cnt+= dfs(x,y+1,arr,v,val)
    cnt+= dfs(x,y-1,arr,v,val)
    cnt+= dfs(x+1,y,arr,v,val)
    cnt+= dfs(x-1,y,arr,v,val)
  return cnt
 
#print(type(arr[1][1]))
 
for i in range(7):
  for j in range(7):
    if dfs(i,j,arr,visited,arr[i][j]) >= 3:
      res+=1
 
print(res)
 

+ Recent posts