티스토리 뷰
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;
}
'알고리즘 > 기타' 카테고리의 다른 글
[2018 카카오 블라인드 채용 1차 코딩 테스트] 뉴스 클러스터링 (0) | 2018.08.31 |
---|---|
[2018 카카오 블라인드 채용 1차 코딩 테스트] 셔틀버스 (0) | 2018.08.31 |
[2018 카카오 블라인드 채용 1차 코딩 테스트] 비밀지도 (0) | 2018.08.30 |
[2018 카카오 블라인드 채용 1차 코딩 테스트] 캐시 (0) | 2018.08.30 |
[2018 카카오 블라인드 채용 1차 코딩 테스트] 다트 게임 (0) | 2018.08.30 |
- Total
- Today
- Yesterday
- 17837
- 시간 복잡도
- 역량 테스트
- 2018 KAKAO BLIND RECRUITMENT
- 삼성
- STL
- 17142
- 17143
- scanf
- string
- hackerrank
- 백준
- SW Expert Academy
- 연구소 3
- 게리맨더링 2
- 알고리즘
- 팁
- boj
- 이차원 배열과 연산
- 트렌드
- 새로운 게임 2
- 2018 카카오 블라인드 채용
- SWEA
- 17140
- DFS
- 17779
- 17144
- DP
- 미세먼지 안녕!
- 입출력
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |