dfs 5

[백준][DFS/BFS] DFS와 BFS (+ 재귀 함수가 아닌 반복문을 이용한 DFS, 우선순위 큐를 이용한 인접 리스트)

오늘의 학습 키워드DFS, BFS, 스택, 큐, 우선순위 큐 오늘의 회고🌱 오늘의 문제https://www.acmicpc.net/problem/1260 그래프를 DFS와 BFS로 탐색한 결과를 출력하는 문제이다.방문 가능한 정점이 여러 개인 경우 정점 번호가 작은 것을 먼저 방문한다. 🌱 나의 시도1. 인접 리스트 구현그래프를 나타내기 위해 우선순위 큐를 이용한 인접 리스트를 구현하였다.이 문제에서는 방문 가능한 정점이 여러 개인 경우 정점 번호가 작은 것부터 순회하여야 하기 때문에, 인접 리스트 내부 인덱스는 정렬된 상태로 유지되어야 한다. 우선순위 큐는 힙으로 구현되어 항상 정렬된 상태를 유지하며 삽입/삭제 시 O(log N)의 시간 복잡도를 가지므로, 리스트를 정렬하는 것보다 우선순위 큐를 ..

Daily/Coding Test 2025.04.16

[응용] DFS와 2차원 배열 내 영역의 최대 개수 구하기

1. 개요DFS 알고리즘을 적용한 문제 유형으로 2차원 배열에 포함된 특정 영역의 최대 개수를 구하는 문제가 많이 출제된다.아래 두 문제를 풀어보며 이러한 문제 유형에 대해 이해하게 되어, 그 내용을 정리해보려고 한다. 이 글에서는 내가 이해한 개념을 자세하게 풀어서 정리하고, 관련 문제의 코드도 함께 살펴 볼 예정이다.  단, 이 글은 DFS 알고리즘에 대해 이해하고 있다는 가정 하에 설명을 진행한다.만약 DFS 알고리즘의 개념이나 원리를 잘 모른다면 아래 글을 참고하기를 추천한다.https://developer-zoyh.tistory.com/17 [알고리즘] DFS(Depth-First Search)와 BFS(Breadth-First Search)0. IntroductionDFS와 BFS를 별도 게시..

[백준][DFS] 섬의 개수

오늘의 학습 키워드DFS 오늘의 회고🌱 오늘의 문제https://www.acmicpc.net/problem/4963배열의 크기(w, h)와 배열이 여러 번 반복하여 주어질 때, 그 배열에 포함된 섬의 개수를 세는 문제이다. [주의할 점]1. 테스트 케이스의 개수가 고정되어 있지 않아 시간 복잡도를 예측하기 어려움이 문제에서는 w, h의 입력이 0 0으로 주어질 때 프로그램을 종료한다. 너비와 높이인 w와 h가 50 이하의 정수이므로, 배열의 크기가 많이 크지는 않으나 테스트 케이스가 몇 개나 반복될 지 모른다는 점에서 시간 복잡도를 예측하기 어렵다.2. 상하좌우 + 대각선 이동 가능상하좌우 뿐만 아니라 대각선으로도 이동 가능하다. 출발점 기준으로 인접한 8개의 위치를 모두 고려해주어야 한다. 우선 간..

Daily/Coding Test 2025.04.10

[백준][DFS] 안전 영역 (+ RecursionError 핸들링 하기)

오늘의 학습 키워드DFS, 시뮬레이션 오늘의 회고🌱 오늘의 문제 https://www.acmicpc.net/problem/2468(왜 미리보기가 안 불러와질까 🥹)2차원 배열이 주어지고 각각의 칸에는 지형의 높이 정보를 나타내는 자연수 값이 들어간다.이 문제에서는 장마철에 특정 높이 이상 비가 와 일부 지형이 물에 잠겼을 때, 물에 잠기지 않은 안전 영역의 최대 개수를 묻고 있다.여기서 안전 영역은 상하좌우로 인접해 있는 지점들이 최대를 이루는 영역을 말한다. 🌱 나의 시도최대 영역에 대한 개수를 세는 문제는 마침 어제 공부한 DFS 문제의 예시와 비슷했다.그래서 나는 이 문제를 재귀 함수를 이용한 DFS로 구현해보려고 한다.또한 이 문제에서는 장마철에 오는 강우량의 '높이'에 대해 명시하지 않으..

Daily/Coding Test 2025.04.04

[알고리즘] DFS(Depth-First Search)와 BFS(Breadth-First Search)

0. IntroductionDFS와 BFS를 별도 게시물로 정리하려고 했으나 결국 하나의 게시물로 정리하게 되었다.둘은 이름이 비슷해서인지 잘 헷갈리는 것 같다.같은 게시물 안에서 동일한 그래프로 비교하면서 보면 더 잘 이해할 수 있을 것이라고 판단하였다.단, BFS, DFS 문제풀이는 본 게시물에서 다루지 않는다. 앞으로 DFS, BFS 문제를 공부하면서 차근차근 하나씩 추가해보겠다. 1. DFS (Depth-First Search, 깊이 우선 탐색)1. 정의이름에서 알려주는 것처럼 깊이를 우선적으로, 즉, 가장 깊이 위치하는 노드까지 탐색하는 알고리즘이다.DFS 문제를 풀 때는 스택을 활용하면 더 쉽게 해결할 수 있다.이것은 예시를 보면 더욱 잘 이해할 수 있으니 예시를 함께 보면서 확인하도록 하자...

728x90