๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/27211)
< ๋๋ ํ์ฑ>
๋ฌธ์ ํ์ด
๋น์ด์๋ ๊ณณ์์ ์ํ์ข์ฐ๋ฅผ ํ์ํ์ฌ ๋น์ด์๋ ๊ณณ์ ์ฐพ์ ์ด๋ํ๋ค.
๋ฒ์ ๋ฐ์ผ๋ก ์ด๋ํ ๋๋ ์ด์ด์ง ๊ณณ์ ์ ์๊ฐํ์ฌ ์ด๋ํ๋ค.
- 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 _27211_ { // ๋๋ ํ์ฑ
static int arr[][], result, n, m;
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=new StringTokenizer(bf.readLine());
n=Integer.parseInt(st.nextToken());
m=Integer.parseInt(st.nextToken());
arr=new int[n][m];
visited=new boolean[n][m];
result=0;
for(int i=0; i<n; i++) {
st=new StringTokenizer(bf.readLine());
for(int j=0; j<m; j++) {
arr[i][j]=Integer.parseInt(st.nextToken());
if(arr[i][j]==1) visited[i][j]=true;
}
}
for(int i=0; i<n; i++) {
for(int j=0; j<m; j++) {
if(!visited[i][j]) {
visited[i][j]=true;
result+=1;
search(i,j);
}
}
}
System.out.println(result);
}
private static void search(int i, int j) {
Queue<int[]> queue=new LinkedList<>();
queue.add(new int[] {i,j});
while(!queue.isEmpty()) {
int temp[]=queue.poll();
for(int k=0; k<4; k++) {
int x=temp[0]+dx[k];
int y=temp[1]+dy[k];
if(x==-1) x= n-1;
if(y==-1) y= m-1;
if(x==n) x=0;
if(y==m) y=0;
if(x>=0 && x<n && y>=0 && y<m && !visited[x][y]) {
visited[x][y]=true;
queue.add(new int[] {x,y});
}
}
}
}
}
Main
- n, m ์ ๋ ฅ
- arr : ๋๋ ์ ๋ณด
- visited : ๋ฐฉ๋ฌธ ์ฌ๋ถ
- result: ํํํ ์ ์๋ ๊ตฌ์ญ์ ๊ฐ์
- ๋๋ ํ์ฑ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ ํ ์ฒ์ผ๋ก ๋งํ ์๋ ๊ณณ์ด๋ผ๋ฉด ๋ฐฉ๋ฌธ ์ฌ๋ถ๋ฅผ true๋ก ์ ์ฅ
- ์ ์ฒด ๋๋ ํ์ฑ์ ํํํ๋ฉฐ ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ์ด๋ผ๋ฉด ํํ์ ์์
Search
- queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณตํ๋ฉด์ ๊ฐ์ ํ๋ ๋ฝ์ ์ํ์ข์ฐ ํ์
- ์ํ์ข์ฐ๋ฅผ ํ์ํ๋ฉฐ ๋ฒ์ ๋ฐ์ด๋ฉด ๋๋ ํ์ฑ์ด ์ด์ด์ ธ ์์ผ๋ฏ๋ก ์ขํ๋ฅผ ์์ ํ์ฌ ๋ฐฉ๋ฌธ ํ์ ๋ฐ queue์ ์ถ๊ฐ
์๊ฐ๐ค
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 16954_์์ง์ด๋ ๋ฏธ๋ก ํ์ถ (0) | 2023.05.24 |
---|---|
[Baekjoon] 2665_๋ฏธ๋ก๋ง๋ค๊ธฐ (0) | 2023.05.23 |
[Baekjoon] 1261_์๊ณ ์คํ (1) | 2023.05.12 |
[Baekjoon] 16469_์๋ ์ ํ (0) | 2023.04.25 |
[Baekjoon] 22352_ํญ์ฒด ์ธ์ (0) | 2023.03.20 |