inflearn logo
강의

Course

Instructor

Coding Test Practice Test (with C++): For Large Companies

3. Big Lake Code Explanation (DFS)

BFS 참고하세요

263

magenta1507

1 asked

0

#include <iostream>
#include <vector>
#include <queue>
using namespace std;

int n, m, k;
int dx[4] = { 1, -1, 0, 0 };
int dy[4] = { 0, 0, 1, -1 };

int main() {
    cin >> n >> m >> k;

    vector<vector<int>> Map(n + 1, vector<int>(m + 1, 0));
    vector<vector<bool>> visited(n + 1, vector<bool>(m + 1, false));
    vector<pair<int, int>> flooded;

    for (int i = 0; i < k; i++) {
        int x, y;
        cin >> x >> y;
        Map[x][y] = 1;
        flooded.push_back({ x, y });
    }

    int max_size = 0;
    for (auto& start : flooded) {
        if (visited[start.first][start.second]) continue;

        int size = 0;
        queue<pair<int, int>> Q;
        Q.push(start);
        visited[start.first][start.second] = true;

        while (!Q.empty()) {
            size++;
            int x = Q.front().first;
            int y = Q.front().second;
            Q.pop();

            for (int i = 0; i < 4; i++) {
                int nx = x + dx[i];
                int ny = y + dy[i];

                if (nx >= 1 && nx <= n && ny >= 1 && ny <= m && Map[nx][ny] == 1 && !visited[nx][ny]) {
                    Q.push({ nx, ny });
                    visited[nx][ny] = true;
                }
            }
        }

        max_size = max(max_size, size);
    }

    cout << max_size << endl;

    return 0;
}

 

DFS가 아닌 BFS 사용해도 문제는 풀립니다.

공부중이라 어느게 더 효율적인지는 모르겠습니다만, 혹시 BFS로 접근하실 분들 참고하라고 올려봅니다~

c++ 코딩-테스트

Answer 1

0

codingcamp

안녕하세요^^

네. 이 문제와 같은 블러드 필(Blood Fill) 스타일의 문제는 DFS나 BFS나 아무걸로 해도 됩니다. 둘의 큰 차이는 없습니다.

감사합니다.

바둑돌에 조합을 구하는 dfs는 설명이 어딨나요

0

95

1

알고리즘이라.. 강의 설명때 모식도가 있으면 더좋겠어요

0

158

1

BFS 코드 중에 이해가 안되는 부분이 있습니다.

0

217

1

호텔 연결 질문드립니다.

0

157

1

최대 선호 음식 질문드립니다.

0

217

1

숨겨진 합 질문드립니다.

0

150

1

제품이동 질문드립니다.

0

124

1

송아지 찾기2 질문드립니다.

0

124

1

정사각형 그리기 질문드립니다.

0

142

1

호텔연결

0

143

1

중복된 문자 제거 코드

0

215

1

전투게임

0

168

1

숲속의 기사

0

131

1

멀티태스킹 질문드립니다.

0

194

1

숨겨진 합 자바 질문드립니다.

0

135

1

영화관람 시간초과 질문드립니다.

0

191

1

[2-5] 최대선호음식 시간초과..

0

262

1

dp 풀이는 어려운가요?

0

397

2

문제 의문

0

294

2

모의고사 7회 2번 송아지 찾기 테스트케이스 3번, 4번 오류

0

311

1

안녕하세요. 궁금한점이 있어서 질문드립니다.

0

243

1

#include<bits/stdc++.h>

0

757

1

잔디 문제 해설 c로 바꿔서 출력할 때

1

372

1

조합을 구할때 algorithm 함수 next_permutation 사용 가능 여부

0

457

1