X
3187번 - 양치기 꿍
import java.awt.Point;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Main {
static int R, C;
static char[][] map;
static boolean[][] visit;
static Queue<Point> queue = new LinkedList<>();
static int allSheep = 0, allWolf = 0;
static int sheep = 0, wolf = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
R = sc.nextInt();
C = sc.nextInt();
map = new char[R][C];
visit = new boolean[R][C]; // false 초기화
sc.nextLine();
for (int i = 0; i < R; i++) {
char[] arr = sc.nextLine().toCharArray();
map[i] = arr;
}
// 전체 개수 새끼
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
if (map[i][j] == 'k') {
allSheep++;
} else if (map[i][j] == 'v') {
allWolf++;
}
}
}
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
if (visit[i][j] == false && map[i][j] != '#') {
traveling(i, j);
if (sheep > wolf) {
allWolf -= wolf;
} else {
allSheep -= sheep;
}
sheep = wolf = 0;
}
}
}
System.out.println(allSheep + " " + allWolf);
sc.close();
}
static void traveling(int x, int y) {
// 방문 확인
if (visit[x][y] == true)
return;
visit[x][y] = true;
if(map[x][y]=='k')
sheep++;
else if(map[x][y]=='v')
wolf++;
// 위
if (x - 1 >= 0 && map[x - 1][y] != '#'&&!visit[x-1][y]) {
queue.add(new Point(x - 1, y));
}
// 아래
if (x + 1 < R && map[x + 1][y] != '#'&&!visit[x+1][y]) {
queue.add(new Point(x + 1, y));
}
// 오른쪽
if (y + 1 < C && map[x][y + 1] != '#'&&!visit[x][y+1]) {
queue.add(new Point(x, y + 1));
}
// 왼쪽
if (y - 1 >= 0 && map[x][y - 1] != '#'&&!visit[x][y-1]) {
queue.add(new Point(x, y - 1));
}
while (!queue.isEmpty()) {
Point p = queue.poll();
traveling(p.x, p.y);
}
}
}
최근 글
같은 카테고리의 다른 글
- 9933번 민균이의 비밀번호
- 1764번 듣보잡
- 1475번 방 번호
- 1157번 단어공부
- 최소값과 최대값
- 구간 합 구하기
- 최소값
- 1181번 - 단어 정렬
- 11652번 - 카드
- 2169번 - 로봇 조종하기
- 2178번 - 미로 탐색
- 9084번 - 동전
- 2098번 - 외판원 순회
- 11049번 - 행렬 곱셉 순서
- 2302번 - 극장 좌석
- 1495번 - Day of Mourning
- 11060번 - 점프 점프
- 5557번 - 1학년
- 1697번 - 숨바꼭질
- 2631번 - 줄세우기
- 11004번 - K번째 수
- 9507번 - Generations of Tribbles
- 1904번 - 01타일
- 10942번 - 팰린드롬
- 10164번 - 격자상의 경로
- 2011번 - 암호코드
- 11066번 - 파일합치기
- 11054번 - 가장 긴 바이토닉 수열
- 11724번 - 연결 요소 개수
- 11403번 - 경로찾기
- 2667번 - 단지번호붙이기
- 3187번 - 양치기 꿍
- 2225번 - 합분해
- 1965번 - 상자넣기
- 1937번 - 욕심쟁이 판다
- 1890번 - 점프
- 1520번 - 내리막길