백준 1012 - 유기농 배추

2020. 1. 28. 13:49·Algorithms/BOJ

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

 

1012번: 유기농 배추

차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. (

www.acmicpc.net

문제


유기농 배추밭에 필요한 흰 지렁이의 개수를 구하는 문제로 인접하여 생기는 배추 영역의 개수가 전체 필요한 지렁이의 개수이다.

 

문제 풀이 


전형적인 BFS, DFS 문제이다. 영역의 개수를 구하는 것이 핵심 포인트이며 정답이 된다.

 

코드


#include <iostream>
#include <algorithm>
#include <queue>

using namespace std;
int M,N,K,testcase,ans=0;
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
int map[50][50]={0,};

bool inside(int x,int y){	//메트릭스에 좌표가 포함되는지 확인하는 함수
    return ((x>=0&&x<M)&&(y>=0&&y<N));
}

void bfs(int x,int y){	//BFS 함수
    map[x][y] = 0;
    queue<pair<int,int> >q;
    q.push(make_pair(x,y));
    while(!q.empty()){
        int x=q.front().first;
        int y=q.front().second;
        q.pop();
        for(int i=0;i<4;i++){
            int nx=x+dx[i];
            int ny=y+dy[i];
            if(inside(nx,ny)&&map[nx][ny]==1){
                q.push(make_pair(nx,ny));map[nx][ny]=0;
            }
        }
    }
}

int main(void){
    std::ios::sync_with_stdio(false); cin.tie(0);
    scanf("%d", &testcase);
    while(testcase--){	//테스트케이스 개수만큼 받기 
        scanf("%d %d %d", &M, &N, &K);
        for(int i=0;i<K;i++){
            int x,y;
            scanf("%d %d", &x, &y);
            map[x][y]=1;
        }
        for(int i=0;i<M;i++){
            for(int j=0;j<N;j++){
                if(map[i][j]==1){
                    bfs(i,j);ans++;
                }
            }
        }
        printf("%d\n",ans); //필요한 지렁이의 개수 
        for(int i=0;i<M;i++){	//map 초기화 장치
            for(int j=0;j<N;j++){
                map[i][j]=0;
            }
        }
        ans=0;   //지렁이 개수 초기화
    }
}

'Algorithms > BOJ' 카테고리의 다른 글

백준 14503 - 로봇 청소기  (0) 2020.02.05
백준 2455 - 지능형 기차  (0) 2020.02.04
백준 7569 - 토마토  (1) 2020.01.29
백준 2583 - 영역구하기  (0) 2020.01.28
백준 12865 - 평범한 배낭  (0) 2020.01.21
'Algorithms/BOJ' 카테고리의 다른 글
  • 백준 2455 - 지능형 기차
  • 백준 7569 - 토마토
  • 백준 2583 - 영역구하기
  • 백준 12865 - 평범한 배낭
dev.wookii
dev.wookii
Effort Maketh Happiness
  • dev.wookii
    습관처럼
    dev.wookii
  • 전체
    오늘
    어제
    • 분류 전체보기 (295)
      • Language (35)
        • python (13)
        • C++ (22)
      • Kaggle (4)
      • Algorithms (112)
        • BOJ (58)
        • programmers (43)
        • SWExpertAcademy (2)
      • Certification (38)
        • Adsp (0)
        • Sqld (28)
        • 정처기 (9)
        • 빅데이터 분석기사 (0)
      • Data Analysis & ML (6)
      • 금융 & 디지털 (65)
      • CS (32)
        • DB (2)
        • SE (3)
        • Web&JSP (1)
        • Network (11)
        • OS (2)
        • Linux&Unix (6)
        • Server (1)
        • UX,UI (1)
        • 보안 (5)
      • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    시뮬레이션
    funny algorithms
    Ebay korea #coding test
    programmers
    2020 KAKAO
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev.wookii
백준 1012 - 유기농 배추
상단으로

티스토리툴바