๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/3187)
< ์์น๊ธฐ ๊ฟ >
๋ฌธ์ ํ์ด
๋ชจ๋ ์์ญ์ ๋ค ํ์ํ๋ฉฐ ๊ฐ์ ์์ญ์ ์๋ ์๊ณผ ๋๋์ ์๋ฅผ ํ์ธํ๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
- 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 _3187_ {
static char arr[][];
static boolean visited[][];
static int sheep, wolf, r, c;
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());
r=Integer.parseInt(st.nextToken());
c=Integer.parseInt(st.nextToken());
arr=new char[r][c];
visited=new boolean[r][c];
for(int i=0; i<r; i++) { // inputs
String str=bf.readLine();
for(int j=0; j<c; j++) {
arr[i][j]=str.charAt(j);
if(arr[i][j]=='#') visited[i][j]=true;
}
}
for(int i=0; i<r; i++) {
for(int j=0; j<c; j++) {
if(!visited[i][j]) {
visited[i][j]=true;
search(i,j);
}
}
}
System.out.println(sheep +" "+ wolf);
}
private static void search(int i, int j) {
Queue<int[]>queue=new LinkedList<>();
queue.add(new int[] {i,j});
int sheep_temp=0, wolf_temp=0;
if(arr[i][j]=='v') wolf_temp+=1;
else if(arr[i][j]=='k') sheep_temp+=1;
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>=0 && x<r && y>=0 && y<c && !visited[x][y]) {
visited[x][y]=true;
queue.add(new int[] {x,y});
if(arr[x][y]=='v') wolf_temp+=1;
else if(arr[x][y]=='k') sheep_temp+=1;
}
}
}
if(sheep_temp>wolf_temp) sheep+=sheep_temp;
else wolf+=wolf_temp;
}
}
Main
- ์์ญ์ ์ธ๋ก(r), ๊ฐ๋ก(c) ์ ๋ ฅ
- ์์ญ ์ ๋ ฅ๋ฐ์ผ๋ฉด์ ์ธํ๋ฆฌ๋ ๋ฐฉ๋ฌธํ ์ผ์ด ์์ผ๋ฏ๋ก ๋ฐ๋ก ๋ฐฉ๋ฌธ ํ์
- ์์ญ ์ ์ฒด๋ฅผ ํ์ํ๋ฉฐ ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ์ด๋ฉด ๋ฐฉ๋ฌธํ์ฌ bfs ํ์
search
- ํ์ฌ ์์น๊ฐ ์์ธ์ง ๋๋์ธ์ง ํ์ธํ์ฌ count
- queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณตํ๋ฉฐ ์ํ์ข์ฐ๋ก ์ด๋ํ์ฌ ์ธํ๋ฆฌ ์์ด ๋๋์ธ์ง ์์ธ์ง ํ์ธ
- ์๊ณผ ๋๋์ ์๋ฅผ ๋น๊ตํ์ฌ ์ด์๋จ๊ฒ ๋๋ ์๊ณผ ๋๋์ ์ count
์๊ฐ๐ค
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 16174_์ ํ์ ์ฉฐ๋ฆฌ (Large) (0) | 2023.02.24 |
---|---|
[Baekjoon] 1756_ํผ์ ๊ตฝ๊ธฐ (0) | 2023.02.24 |
[Baekjoon] 1240_๋ ธ๋์ฌ์ด์ ๊ฑฐ๋ฆฌ (0) | 2023.01.15 |
[Baekjoon] 6593_์๋ฒ ๋น๋ฉ (0) | 2023.01.08 |
[Baekjoon] 13565_์นจํฌ (1) | 2022.12.27 |