[백준] 4963번 : 섬의 개수 - C#

강재원·2022년 11월 24일
0

[코딩테스트] C#

목록 보기
190/200



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

using System;
using System.Collections;

class Program
{
    static int[,] arr;
    static bool[,] check;
    static int[] dx={0,0,1,-1,1,1,-1,-1};
    static int[] dy={1,-1,0,0,1,-1,-1,1};
    static int w;
    static int h;
    
    static void find(int i,int j){
        check[i,j]=true;
        
        for(int k=0;k<8;k++){
            int x=i+dx[k];
            int y=j+dy[k];
            
            if(x>=0 && x<h && y>=0 && y<w){
                if(arr[x,y]==1 && check[x,y]==false) find(x,y);
            }
        }
    }
    
    static void Main() {
        while(true){
            string[] s=Console.ReadLine().Split(' ');
            w=int.Parse(s[0]);
            h=int.Parse(s[1]);
            if(w==0 && h==0) break;
            arr=new int[h,w];
            
            for(int i=0;i<h;i++){
                string[] s1=Console.ReadLine().Split(' ');
                for(int j=0;j<w;j++){
                    arr[i,j]=int.Parse(s1[j]);
                }
            }
            check=new bool[h,w];
            int count=0;
            
            for(int i=0;i<h;i++){
                for(int j=0;j<w;j++){
                    if(arr[i,j]==1 && check[i,j]==false){
                        find(i,j);
                        count++;
                    }
                }
            }
            Console.WriteLine(count);
        }
    }
}
profile
개념정리 & 문법 정리 & 알고리즘 공부

0개의 댓글