티스토리 뷰
출처 : https://www.hackerrank.com/challenges/connected-cell-in-a-grid/problem
#include <bits/stdc++.h>
using namespace std;
bool visited[10][10];
int cnt, dy[] = {0,0,1,-1, 1, 1 , -1, -1}, dx[] = {1,-1,0,0,-1,1,1,-1};
inline bool check(int i, int j, int n, int m) { return (i >= 0 && j >= 0 && i < n && j < m) ? true : false; }
int dfs(int n, int m, int i, int j, int cnt, vector<vector<int>> v) {
visited[i][j] = 1; cnt++;
for (int d = 0; d < 8; d++) {
int ni = i + dy[d], nj = j + dx[d];
if (check(ni,nj,n,m) && v[ni][nj] && !visited[ni][nj]) cnt = dfs(n,m,ni, nj, cnt, v);
}
return cnt;
}
int connectedCell(vector<vector<int>> matrix) {
int ans = 0, n = matrix.size(), m = matrix[0].size();
memset(visited, 0, sizeof(visited));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (matrix[i][j] && !visited[i][j]) {
ans = max(ans, dfs(n,m,i, j, 0, matrix));
}
}
}
return ans;
}
int main()
{
ofstream fout(getenv("OUTPUT_PATH"));
int n;
cin >> n;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
int m;
cin >> m;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
vector<vector<int>> matrix(n);
for (int i = 0; i < n; i++) {
matrix[i].resize(m);
for (int j = 0; j < m; j++) {
cin >> matrix[i][j];
}
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
int result = connectedCell(matrix);
fout << result << "\n";
fout.close();
return 0;
}
'알고리즘 > 기타' 카테고리의 다른 글
삼성 SW 역량 테스트 기출 풀이 (1) | 2019.02.13 |
---|---|
[삼성 SW 테스트] 기출, 모의 기출 문제 정리 [업데이트 중] (0) | 2018.10.04 |
[HackerRank] Lily's Homework (0) | 2018.10.02 |
[HackerRank] The Grid Search (0) | 2018.10.01 |
[HackerRank] The Time in Words (0) | 2018.10.01 |
- Total
- Today
- Yesterday
- scanf
- hackerrank
- 2018 카카오 블라인드 채용
- SWEA
- 2018 KAKAO BLIND RECRUITMENT
- 17837
- STL
- 17143
- 삼성
- 시간 복잡도
- 연구소 3
- SW Expert Academy
- string
- 17142
- 역량 테스트
- 알고리즘
- 게리맨더링 2
- 17140
- 백준
- DFS
- 트렌드
- DP
- 팁
- 17779
- 미세먼지 안녕!
- 새로운 게임 2
- 입출력
- 17144
- boj
- 이차원 배열과 연산
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |