ASHD Dev_Blog

코테 공부 [DFS/BFS]

DFS/BFS 이론 공부 및 기본 구조 구현

이재룡
이재룡 Jun 30, 2025

[ 1. DFS / BFS ]

STACK (LIFO)

  • DFS는 Stack 이용 [ 사실상 일반 리스트랑 동일 ]
 

DFS

  • 시작 노드를 stack에 삽입하고 방문 처리 (visited[v] = true)
  • 방문 하지 않은 인접노드를 stack에 넣는 과정을 끝까지 반복

⇒ 들어간 노드가 여러 개면 해당 인접 노드가 최고 깊이 까지 탐색이 완료된 이후의 순번 (LIFO)

 
 

QUEUE(FIFO)

  • BFS는 queue 이용 [ 반드시 import deque ]
 

BFS

  • 시작 노드를 queue에 삽입하고 방문 처리 (visited[v] = true)
  • 방문 하지 않은 인접노드를 queue에 넣는 과정을 끝까지 반복

⇒ 들어간 노드가 여러 개면 해당 인접 노드가 다음 순번 (FIFO)

 

[ 2. 재귀함수 ]

factorial

  • n이 1 이하인 경우 return 1
  • 그렇지 않은 경우 return n* f(n-1)
 

유클리드 호제법 (GCD)

  • 최대공약수 구하는 문제에서 (A>B)
    • A를 B로 나눈 나머지가 R이면 GCD(A,B)는 GCD(B,R)

결과적으로 A%B = 0이면 return B

그렇지 않은 경우 GCD(B, A%B)

 

+ 추가로 두 수가 서로소 라면 최대 공약수 = 1

이는 결국 해당 코드에서 a%b가 1인 값이 도출되서 자동으로 해당 코드에서 b % 1 =0으로 자동 진행

 

추천 글

BlogPro logo