ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준][2573] 빙산
    코딩/알고리즘 2018. 8. 27. 22:38

    파이썬으로 하려다 정말 10번 넘는 런타임에러에 지쳐


    다른 사람 소스코드를 참조한(거의..;) 한 코드다..


    dfs 문제를 오랜만에 접하다 보니 정말 감이 없어서 오래걸렸다...


    그래도 조금은 익숙해진모양이다 .


    이 문제는 분리된영역을 찾는 문제인데 

    dfs는 연결영역을 한번에 끝까지 가니 dfs가 몇번 돈지 확인하면 된다


    divide_  함수를 통해서 dfs 를 실행시키고 그게 몇번 실행된지를 알면된다..


    파이썬으로 짠 사람이 한명있더라.. 대단하다....

    import java.util.Scanner;
    
    
    public class bingsan2573 {
    	static int[][] map = new int[301][301];
    	static int[][] temp = new int[301][301];
    	static int[][] visit = new int[301][301];
    	//상하 좌우
    	//[-1,0],[1,0],[0,-1],[0,1]
    	static int[] dx = { -1, 0, 1, 0 };
    	static int[] dy = { 0, -1, 0, 1 };
    	static int N;
    	static int M;
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		N = sc.nextInt();
    		M = sc.nextInt();
    		
    		for(int i = 0 ; i <  N; i++) {
    			for(int j = 0; j  0 ) {
    						temp[i][j] = Count_Iceberg(i,j);
    					}
    				}
    			}
    			
    			for(int i = 0 ; i <  N; i++) {
    				for(int j = 0; j  0 ) {
    					divide_Num += 1;
    					dfs(i,j);
    				}
    			}
    		}
    		return divide_Num;
    	}
    	public static void dfs(int sero, int garo) {
    
    		//System.out.println("sero " + sero +" garo " + garo);
    		visit[sero][garo] = 1;
    		for(int i = 0 ; i< 4; i++) {
    			int y = sero + dy[i];
    			int x = garo + dx[i];	
    			
    			if(y >= 0 && y < N && x < M && x >= 0 ) {
    				if(map[y][x] > 0 && visit[y][x] == 0) {
    					dfs(y,x);
    				}
    			}
    			
    		}
    	
    		
    		
    		
    	}
    	public static int Count_Iceberg(int sero, int garo) {
    		int x= 0;
    		int y= 0;
    		int icebergCnt = 0;
    		for(int i = 0 ; i< 4; i++) {
    			 y = sero + dy[i];
    			 x = garo + dx[i];
    		
    			if(y >= 0 && y < N && x < M && x >= 0 ) {
    				if(map[y][x] <= 0 && map[sero][garo] > 0) {
    					icebergCnt++;
    				}
    			}
    		}
    			
    		return icebergCnt ;
    	}
    	
    }
    
    


    '코딩 > 알고리즘' 카테고리의 다른 글

    [백준][3055][자바] 탈출  (0) 2018.09.30
    [백준][자바][5532]방학숙제  (0) 2018.09.15
    [백준][자바]2468 안전영역  (0) 2018.09.03
    [백준][자바]2589 보물섬  (0) 2018.08.29
    [파이썬][백준]2979 트럭주차  (0) 2018.07.27

    댓글

Designed by Tistory.