Make Unreal REAL.
article thumbnail
Level 2. 카카오프렌즈 컬러링북

 

 

전형적인 완전 탐색 문제다.

  • DFS가 깔끔해서 썼지만 BFS로 풀 수도 있다.

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int rDFS(unsigned i, unsigned j, int color, vector<vector<int>>& picture)
{
    if (picture.size() <= i || picture.front().size() <= j || picture[i][j] != color)
        return 0;

    picture[i][j] = 0;

    return rDFS(i - 1, j, color, picture) +
           rDFS(i + 1, j, color, picture) +
           rDFS(i, j - 1, color, picture) +
           rDFS(i, j + 1, color, picture) + 1;
}

vector<int> solution(int m, int n, vector<vector<int>> picture)
{
    int number_of_area = 0;
    int max_size_of_one_area = 0;

    for (unsigned i = 0; i < m; ++i)
        for (unsigned j = 0; j < n; ++j)
            if (picture[i][j])
                max_size_of_one_area = max(max_size_of_one_area, rDFS(i, j, picture[i][j], picture)),
                ++number_of_area;

    return {number_of_area, max_size_of_one_area};
}

'자료구조 & 알고리즘 > 프로그래머스' 카테고리의 다른 글

Level 2. 택배상자  (0) 2023.08.12
Level 3. 합승 택시 요금  (0) 2023.08.11
Level 3. 기지국 설치  (0) 2023.08.09
Level 3. 순위  (0) 2023.08.08
Level 2. 조이스틱  (0) 2023.08.07
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그