[C++]BOJ 1012 - 유기농 배추

[C++]BOJ 1012 - 유기농 배추

배열을 순회하며 배추를 만나면 그 지점부터 bfs나 dfs를 돌리며 모두 0으로 초기화한다.
이 과정을 반복해 모둔 배추 영역을 찾은 후 그 영역의 갯수를 출력하면 된다.
bfs와 dfs모두 다뤄보겠다.

Read More
[C++]BOJ 2667 - 단지번호붙이기

[C++]BOJ 2667 - 단지번호붙이기

지도를 배열에 저장하고 칸별로 분기를 돌며 집이 있는 칸을 만나면 인접한 집들을 탐색한다.
위 과정을 반복해 단지를 나누고 집의 수를 벡터에 저장한 후 정렬해 출력한다.
bfs dfs 두 방법 모두 다뤄보겠다.

Read More
[C++]BOJ 2178 - 미로 탐색

[C++]BOJ 2178 - 미로 탐색

각 칸에서 이동할 수 있는 칸으로 탐색해나가 도착점에 도달하면 그 이동 거리가 최소 거리가 되므로 bfs를 사용하면 빠르게 해결할 수 있다.
dfs로도 해결할 수 있지만 한번 방문한 칸은 다신 방문하지 않는 bfs와는 다르게 모든 경로를 탐색하므로 작동시간이 다소 오래걸린다.

두 방법 모두 다뤄보겠다.

Read More
[C++]BOJ 14501 - 퇴사

[C++]BOJ 14501 - 퇴사

n이 최대 15이기 때문에 최악의 경우에도 2^15가지의 경우의 수를 가진다.
따라서 완전탐색을 해도 문제가 없다.
하지만 동적 계획법으로도 해결할 수 있기 때문에 두가지 방법을 다뤄보겠다.

Read More
DFS(Depth First Search)와 BFS(Breath First Search)

DFS(Depth First Search)와 BFS(Breath First Search)

  • 깊이 우선 탐색(Depth First Search)
    • 루트 노드에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법
    • 재귀함수를 기반으로 순환 알고리즘의 형태를 지님.
  • 너비 우선 탐색(Breath First Search)
    • 루트 노드에서 시작해서 인접한 노드를 먼저 탐색하는 방법
    • 재귀함수로 동작하지 않는다.
    • 큐를 사용하여 효율적으로 구현 가능하다.

hackerearth

Read More