이유's STUDY/알고리즘 문제풀이
백준 2667_단지
살아가는 이유_EU
2019. 10. 2. 11:11
728x90
반응형
아직 알고리즘 처음이라 부족한 부분이 많다. 하나하나 풀어보면서.. 어디서 막혔는지 정리해보기.
1. first trial -> 실패
어려웠던 부분
- scanf("1d%") 라는 한글자씩 받아오는 입출력과정을 못해서 해맸었다.
- 단지의 갯수인 cnt 를 도대체 어디서 세주는지 이해하질 못하였다.
- for 문 돌면서 범위를 도는데 어디서 어디까지 범위를 돌리는지 이해를 못했다.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#include <iostream>
using namespace std;
int board[25][25] = {0} //보드판
int visited[25][25] = {0}
int cnt; //단지의 개수 -> Maximum 의 개수도 구해야하나?
int n; //지도의 크기
int dy[4] = {0,0, -1, 1};
int dx[4] = {1, -1, 0, 0 };
//탐색
void dfs(int x, int y)
{
for(int i = 0; i < 4 ; i++)
{
if(x < n && visited[x][y] != 1)
{
x += dx[i];
}
if(y < n && visited[x][y] != 1)
{
y += dy[i];
}
if(visited[x][y] != 1)
dfs(x, y);
}
cnt ++; //어디서 이 count 를 세아햘지 감이 안오넹..
}
int main(void)
{
//입력
scanf("%d", &n);
for(int i = 0; i <n ; i++)
{
for(int j = 0; j< n; j++) //숫자하나만 입력받을 경우! &1d 로 받은 것. 기억하자!!
scanf("%1d",&board[i][j]);
}
// 수행
for(int i =0; i< n; i++)
{
for(int j = 0 ; j<n ; j++)
dfs(i,j);
prinf("%d", &cnt);
}
// 출력
}
|
|
728x90
반응형