BOJ

백준 1473 - 음식물 피하기

yanJuicy 2019. 5. 23. 00:54
반응형

문제

https://www.acmicpc.net/problem/1743

 

1743번: 음식물 피하기

문제 코레스코 콘도미니엄 8층은 학생들이 3끼의 식사를 해결하는 공간이다. 그러나 몇몇 비양심적인 학생들의 만행으로 음식물이 통로 중간 중간에 떨어져 있다. 이러한 음식물들은 근처에 있는 것끼리 뭉치게 돼서 큰 음식물 쓰레기가 된다.  이 문제를 출제한 선생님은 개인적으로 이러한 음식물을 실내화에 묻히는 것을 정말 진정으로 싫어한다. 참고로 우리가 구해야 할 답은 이 문제를 낸 조교를 맞추는 것이 아니다.  통로에 떨어진 음식물을 피해가기란 쉬운 일이 아

www.acmicpc.net

 

풀이

상하좌우로 탐색하며 음식물이 있는지 없는지 검사하여 최대값을 찾으면 된다. 

 

1. 2차원 배열을 돌면서 음식물이 있는 곳(1)을 찾는다.

2. 음식물이 있는 곳은 0으로 바꾼다

3.. 음식물이 있는 곳에서 상하좌우를 재귀적으로 검사한다.

4. 2차원 배열을 다 돌 때까지 2, 3을 반복한다.

 

코드

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int graph[102][102];
 
int N, M, K;
int result;
 
void getmax(int row, int col)
{
    result++;
    graph[row][col] = 0;
 
    if (graph[row - 1][col])
    {
        graph[row - 1][col] = 0;
        getmax(row - 1, col);
    }
 
    if (graph[row + 1][col])
    {
        graph[row + 1][col] = 0;
        getmax(row + 1, col);
    }
 
    if (graph[row][col - 1])
    {
        graph[row][col - 1= 0;
        getmax(row, col - 1);
    }
 
    if (graph[row][col + 1])
    {
        graph[row][col + 1= 0;
        getmax(row, col + 1);
    }
}
 
int main()
{
    cin.tie(0);
    ios::sync_with_stdio(false);
 
    cin >> N >> M >> K;
 
    int r, c;
    for (int i = 0; i < K; i++)
    {
        cin >> r >> c;
 
        graph[r][c] = 1;
    }
 
    vector<int> v;
    for (int i = 1; i <= N; i++)
    {
        for (int j = 1; j <= M; j++)
        {
            if (graph[i][j])
            {
                result = 0;
                getmax(i, j);
                v.push_back(result);
            }
        }
    }
    sort(v.begin(), v.end(), greater<int>());
 
    cout << v[0];
 
    return 0;
}
 
cs

 

 

 

반응형

'BOJ' 카테고리의 다른 글

백준 2644 - 촌수계산  (0) 2019.05.30
백준 2193 - 이친수  (0) 2019.05.26
백준 1012 - 유기농 배추  (0) 2019.05.18
백준 1629 - 곱셈  (0) 2019.05.16
백준 9465 - 스티커  (0) 2019.05.14