๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 11123_์–‘ ํ•œ๋งˆ๋ฆฌ... ์–‘ ๋‘๋งˆ๋ฆฌ...

๋ฟŒ์•ผ._. 2023. 3. 1. 23:42

Silver II

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/11123)

< ์–‘ ํ•œ๋งˆ๋ฆฌ... ์–‘ ๋‘๋งˆ๋ฆฌ... >

 

๋ฌธ์ œ ํ’€์ด

 

bfs ํƒ์ƒ‰ํ•˜์—ฌ ์–‘ ๋ฌด๋ฆฌ๋ฅผ ์ฐพ์•„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

 - my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;

public class _11123_ { // ์–‘ ํ•œ๋งˆ๋ฆฌ... ์–‘ ๋‘๋งˆ๋ฆฌ...
	static int arr[][], H, W;
	static boolean visited[][];
	static int[] dx= {-1,1,0,0};
	static int[] dy= {0,0,-1,1};
	public static void main(String[] args) throws IOException {
		BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		int T=Integer.parseInt(bf.readLine());
		for(int i=0; i<T; i++) {
			st=new StringTokenizer(bf.readLine());
			H=Integer.parseInt(st.nextToken()); // ๋†’์ด
			W=Integer.parseInt(st.nextToken()); // ๋„ˆ๋น„
			arr=new int[H][W];
			visited=new boolean[H][W];
			for(int j=0; j<H; j++) { // input
				String str=bf.readLine();
				for(int k=0; k<W; k++) {
					arr[j][k]=str.charAt(k);
					if(arr[j][k]=='.') visited[j][k]=true;
				}
			}
			int result=0;
			for(int j=0; j<H; j++) {
				for(int k=0; k<W; k++) {
					if(!visited[j][k]) {
						result+=1;
						search(j,k);
					}
				}
			}
			System.out.println(result);
		}
	}
	private static void search(int j, int k) {
		Queue<int[]>queue=new LinkedList<>();
		queue.add(new int[] {j,k});
		visited[j][k]=true;

		while(!queue.isEmpty()){
			int temp[]=queue.poll();
			for(int i=0; i<4; i++) {
				int x=temp[0]+dx[i];
				int y=temp[1]+dy[i];
				if(x>=0 && x<H && y>=0 && y<W && !visited[x][y]) {
					visited[x][y]=true;
					queue.add(new int[] {x,y});
				}
			}
		}
	}
}

 

Main

- ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜ (T) ์ž…๋ ฅ

- ๊ทธ๋ฆฌ๋“œ์˜ ๋†’์ด (H), ๋„ˆ๋น„ (W) ์ž…๋ ฅ

- ๊ทธ๋ฆฌ๋“œ ์ž…๋ ฅ๊ณผ ๋™์‹œ์— ํ’€์€ ํ•„์š” ์—†์œผ๋ฏ€๋กœ ๋ฐฉ๋ฌธ ํ‘œ์‹œ

- ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๊ณณ์€ ์–‘๋“ค์ด ์žˆ๋Š” ๊ณณ์ด๋ฏ€๋กœ ํ•จ์ˆ˜ ํ˜ธ์ถœ

- ์–‘์˜ ๋ฌด๋ฆฌ (result) ์ถœ๋ ฅ

 

search

- queue๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜์—ฌ queue ๊ฐ’์„ ๋ฝ‘์•„ ์ƒํ•˜์ขŒ์šฐ ์ด๋™ํ•˜์—ฌ ๊ทธ๋ฆฌ๋“œ ๋ฒ”์œ„ ์•ˆ์ด๋ฉฐ ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๊ณณ์ด๋ฉด ๋ฐฉ๋ฌธ ํ‘œ์‹œ ๋ฐ queue์— ์ถ”๊ฐ€


์ƒ๊ฐ๐Ÿค”