[다시 푸는 문제]
[DFS]
def DFS(start):
global answer
visited[start] = 1
for i in network[start]:
if visited[i] == 0:
DFS(i)
answer += 1
if __name__ == "__main__":
computer = int(input())
pair_Computer = int(input())
network = [[] for _ in range(computer+1)]
visited = [0] * (computer + 1)
answer = 0
for i in range(pair_Computer):
a,b = map(int,input().split())
network[a].append(b)
network[b].append(a)
DFS(1)
print(answer)
[BFS]
import collections
def BFS(start):
global answer
q = collections.deque([1])
while q:
x = q.popleft()
visited[x] = 1
for i in network[x]:
if visited[i] == 0:
q.append(i)
visited[i] = 1
answer += 1
if __name__ == "__main__":
computer = int(input())
pair_Computer = int(input())
network = [[] for _ in range(computer+1)]
visited = [0] * (computer + 1)
answer = 0
for i in range(pair_Computer):
a,b = map(int,input().split())
network[a].append(b)
network[b].append(a)
BFS(1)
print(answer)
[메모]
- 전역 변수를 사용해서 방문 노드를 방문처리 후 answer + 1 해준 뒤 마지막에 print해준다.
- DFS는 재귀이기 때문에 따로 반복문 내에서 방문처리하지 않아도 된다.
- BFS는 재귀가 아니기 때문에 방문처리를 신경써서 해주어야 한다.
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][수학] - 17496. 스타후르츠 (0) | 2022.05.02 |
---|---|
[백준][그래프] - 2667. 단지번호붙이기 (0) | 2022.05.02 |
[백준][그래프] - 1260. DFS와 BFS (0) | 2022.04.29 |
[백준][수학/사칙연산] 2525. 오븐 시계 (0) | 2022.03.01 |
[백준][수학/사칙연산] 18108. 1998년생인 내가 태국에서는 2541년생?! (0) | 2022.03.01 |