#문제

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

 

1743번: 음식물 피하기

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

www.acmicpc.net

 

#작성 코드

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
#include <iostream>
using namespace std;
 
/*
1743 음식물 피하기
 
떨어진 음식물 중에 제일 큰 음식물은 피하고 싶다!
 
*/
 
int n, m, k;    // 통로의 세로길이, 가로길이, 음식물 쓰레기 개수
bool trash[101][101];    // [1][1] ~ [n][m] 사용.
bool visit[101][101];
int tmpbunch=0;
int bunch=0;        // 가장 큰 음식물 쓰레기의 크기 저장. 
int d[4][2= {{1,0}, {-1,0}, {0,1}, {0,-1}};
 
void dfs(int x, int y){
    visit[x][y] = true;
    tmpbunch++;        // 현재 [x][y]개수를 tmpbunch에 추가. 
    for(int v=0; v<4; v++){
        int newx = x+d[v][0];
        int newy = y+d[v][1];
        if1<=newx&&newx<=n&&1<=newy&&newy<=m ){
            if( trash[newx][newy]==true && visit[newx][newy]==false ){
                visit[newx][newy] = true;
                dfs(newx, newy); 
            }
        }
    }
 
int main(){
    /* 통로의 세로길이, 가로길이, 음식물 쓰레기 개수 입력*/
    cin>>n>>m>>k;
    /* k개의 음식물이 떨어진 좌표 입력 */
    for(int K=0; K<k; K++){
        int x, y;
        cin>>x>>y;
        trash[x][y] = 1;
    }
    
    /* 음식물 중 가장 큰 음식물의 '크기'를 출력 */
    for(int i=1; i<=n; i++){
        for(int j=1; j<=n; j++){
            // 음식물 쓰레기를 찾는다. 
            if( trash[i][j]==true ){
                // 방문한 적 없는 쓰레기라면 그 쓰레기에 연결된 쓰레기 탐색. 
                if( visit[i][j]==true ) continue;
                else{
                    dfs(i, j);    
                }
            }
            bunch = max(bunch, tmpbunch);
            tmpbunch=0;
        }
    }
    cout<<bunch<<'\n';
    return 0;
cs

##

전엔 이런 문제들을 대부분 bfs로 풀었는데, dfs로 푸는 방법에도 익숙해지는 중...

'BOJ' 카테고리의 다른 글

BOJ 10026번 :: 적록색약  (0) 2020.02.16
BOJ 2583번 :: 영역 구하기  (0) 2020.02.13
BOJ 11724번 :: 연결 요소의 개수  (0) 2020.02.12
BOJ 9466번 :: 텀 프로젝트  (0) 2020.02.12
BOJ 5430번 :: AC  (0) 2020.02.11

+ Recent posts