문제 링크
https://www.acmicpc.net/problem/2667
파이썬 델타 값 이용하기
dx = [0,0,-1,1]
dy = [-1,1,0,0]
for i in range(4):
pointX = x + dx[i]
pointY = y + dy[i]
=> i = 0
pointX = x , pointY = y - 1 : 왼쪽 노드
i = 1
pointX = x , pointY = y + 1 : 오른쪽 노드
i = 2
pointX = x - 1 , pointY = y : 위쪽 노드
i = 3
pointX = x + 1, pointY = y : 아래쪽 노드
정답 코드
import sys
dx = [0,0,-1,1]
dy = [-1,1,0,0]
def dfs(x,y):
global count
visited[x][y] = True
if mapping[x][y] == 1:
count += 1
for i in range(4):
pointX = x + dx[i]
pointY = y + dy[i]
if 0<= pointX < N and 0<= pointY < N:
if visited[pointX][pointY] == False and mapping[pointX][pointY] == 1:
dfs(pointX,pointY)
N = int(sys.stdin.readline())
mapping = []
for i in range(N):
mapping.append(list(map(int,sys.stdin.readline().rstrip())))
result = []
count = 0
visited = [[False]*N for i in range(N)]
for i in range(N):
for j in range(N):
if mapping[i][j] == 1 and visited[i][j] == False:
dfs(i,j)
result.append(count)
count = 0
result.sort()
print(len(result))
for i in range(len(result)):
print(result[i])
그래프 너무 어렵다..
728x90
'파이썬 알고리즘 문제 풀이' 카테고리의 다른 글
Baekjoon Online Judge 7576번 파이썬 (0) | 2022.08.16 |
---|---|
Baekjoon Online Judge 4963번 파이썬 (0) | 2022.08.13 |
Baekjoon Online Judge 9466번 파이썬 (0) | 2022.08.05 |
Baekjoon Online Judge 2331번 파이썬 (0) | 2022.08.04 |
Baekjoon Online Judge 10451번 파이썬 (0) | 2022.08.04 |