티스토리 뷰

2017 카카오코드 예선 :: 카카오프렌즈 컬러링북


출처 : https://programmers.co.kr/learn/courses/30/lessons/1829#


#include <iostream>

#include <vector>

#include <algorithm>

#include <memory.h>

using namespace std;


int M, N, number_of_area, max_size_of_one_area;

bool visited[100][100];

int dir[4][2] = { {1,0},{-1,0},{0,1},{0,-1} };

vector<vector<int>> v;


inline bool check(int i, int j) { return ((i >= 0 && j >= 0 && i < M && j < N) ? true : false); }


int cal(int i, int j, int c) {

visited[i][j] = true; int n = 1;

for (int d = 0;d < 4; d++) {

int ni = i + dir[d][0]; int nj = j + dir[d][1];

if (check(ni, nj) && !visited[ni][nj] && v[ni][nj] == c) {

n += cal(ni, nj, c);

}

}

return n;

}


vector<int> solution(int m, int n, vector<vector<int>> picture) {

std::ios::sync_with_stdio(false);cin.tie(0);


memset(visited, false, sizeof(visited));

v.clear(); v = picture;

number_of_area = 0; max_size_of_one_area = 0; N = n; M = m;


for (int i = 0; i < M;i++) {

for (int j = 0;j < N; j++) {

if (v[i][j]>0 && !visited[i][j]) {

number_of_area++;

max_size_of_one_area = max(max_size_of_one_area, cal(i, j, v[i][j]));

}

}

}


vector<int> answer(2);

answer[0] = number_of_area;

answer[1] = max_size_of_one_area;

return answer;

}



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함