알고리즘/BFS DFS(22)
-
[백준/C++] 7576번 토마토
문제: www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 문제풀이 BFS를 이용해 최단거리를 구하는 문제이다. 이 문제는 시작점(익은 토마토)이 여러 곳이므로 시작점을 모두 큐에 넣어준다. 코드 #include #include using namespace std; int dx[4] = {-1,1,0,0}; int dy[4] = {0,0,-1,1}; int board[1000][1000]; int dist[1000][1000]; int main(..
2021.03.25 -
[백준/C++] 2178번 미로 탐색
문제: www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 문제풀이 BFS를 이용해 (1, 1) 부터 (N, M) 까지의 최단거리를 구하는 문제이다. 미로가 공백없이 한 행씩 입력되므로 맵을 문자열로 선언했다. 코드 #include #include using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int N, M; cin>>N>>M; string board[100]; //한 행씩 입력되므로 문자열로 선..
2021.03.25 -
[백준/C++] 1926번 그림
문제: www.acmicpc.net/problem/1926 1926번: 그림 어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로 www.acmicpc.net 문제풀이 BFS 알고리즘으로 문제를 풀었다. 코드 #include #include using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin>>n>>m; int visited[500][500] = {0,}; int board[500][500]; int dx[4] = {-1, 1, 0, 0}; int d..
2021.03.24 -
[백준/C++] 11724번 연결 요소의 개수
문제:www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 문제풀이 BFS/DFS를 이용하여 풀었다. 그래프의 연결 요소 즉, 서로 연결되지 않은 그래프들의 수를 구하는 문제이다. 연결 요소의 수를 구하는 방법으로 방문하지 않은 노드를 만나면 1을 카운트하고 해당 노드의 탐색을 진행했다. 코드 #include #include using namespace std; int N, M; int visited[..
2021.02.25