๋ฌธ์ (์ถ์ฒ: 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์ ์ถ๊ฐ
์๊ฐ๐ค
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 14395_4์ฐ์ฐ (0) | 2023.03.05 |
---|---|
[Baekjoon] 12761_๋๋ค๋ฆฌ (0) | 2023.03.03 |
[Baekjoon] 14940_์ฌ์ด ์ต๋จ๊ฑฐ๋ฆฌ (0) | 2023.02.27 |
[Baekjoon] 18126_๋๊ตฌ๋ฆฌ ๊ตฌ๊ตฌ (0) | 2023.02.26 |
[Baekjoon] 16174_์ ํ์ ์ฉฐ๋ฆฌ (Large) (0) | 2023.02.24 |