Park DJ
dj0998
Park DJ
전체 방문자
오늘
어제
  • 분류 전체보기 (363)
    • 백준 (363)

공지사항

인기 글

태그

  • 자바
  • 백준 15312
  • 백준 2591
  • 백준
  • 백준 16926
  • Java
  • 백준 16194
  • 백준 1531
  • 백준 1011
  • 백준 7662
  • 백준 3049
  • 백준 2467
  • 백준 24039
  • 백준 4659
  • 백준 1747
  • 백준 1914
  • 백준 6550
  • 백준 7567
  • 백준 15655
  • 백준 12871
  • 백준 12605
  • 백준 8892
  • 백준 15961
  • 백준 10709
  • 백준 1064
  • 백준 2225
  • 백준 2343
  • 백준 1495
  • 백준 3135
  • 백준 14582
hELLO · Designed By 정상우.
Park DJ

dj0998

백준 3184 양(Java)
백준

백준 3184 양(Java)

2023. 2. 22. 23:04

https://www.acmicpc.net/problem/2864

 

2864번: 5와 6의 차이

첫째 줄에 두 정수 A와 B가 주어진다. (1 <= A,B <= 1,000,000)

www.acmicpc.net

2864번: 5와 6의 차이 (acmicpc.net)


 

해석 및 팁

 


 

이 문제는 dfs 사용하면 되는 문제입니다. 울타리의 여부만 주의하면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;

public class Main {
  
  static int wolf;
  static int sheep;
  static int w = 0;
  static int s = 0;
  static int r;
  static int c;
  static int[] dx = {1, -1, 0, 0};
  static int[] dy = {0, 0, -1, 1};
  static char[][] arr;
  static boolean[][] visit;
  
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    StringBuilder sb = new StringBuilder();

    r = sc.nextInt();
    c = sc.nextInt();
    arr = new char[r][c];
    visit = new boolean[r][c];
 
    for(int i = 0; i < r; i++) {
      String str = sc.next();
      for(int j = 0; j < c; j++) arr[i][j] = str.charAt(j);
    }

    for(int i = 0; i < r; i++) {
      for(int j = 0; j < c; j++) {
        if(visit[i][j] == false && arr[i][j] != '#' && (arr[i][j] == 'v' || arr[i][j] == 'o')) {
          wolf = 0;
          sheep = 0;
          dfs(i, j);
          if(wolf < sheep) s += sheep;
          else w += wolf;
        }
      }
    }
    sb.append(s+" "+w);
    
    System.out.println(sb);
  }

  public static void dfs(int a, int b) {
    visit[a][b] = true;
    if(arr[a][b] == 'v') wolf++;
    else if(arr[a][b] == 'o') sheep++;

    for(int i = 0; i < 4; i++) {
      int x = a + dx[i];
      int y = b + dy[i];

      if(x >= 0 && x < r && y >= 0 && y < c && arr[x][y] != '#' && visit[x][y] == false) dfs(x, y);
    }
  }
}

'백준' 카테고리의 다른 글

백준 1914 하노이 탑(Java)  (0) 2023.02.23
백준 15903 카드 합체 놀이(Java)  (0) 2023.02.23
백준 16212 정열적인 정렬(Java)  (0) 2023.02.22
백준 14582 오늘도 졌다(Java)  (0) 2023.02.22
백준 16926 배열 돌리기 1(Java)  (0) 2023.02.22
    '백준' 카테고리의 다른 글
    • 백준 1914 하노이 탑(Java)
    • 백준 15903 카드 합체 놀이(Java)
    • 백준 16212 정열적인 정렬(Java)
    • 백준 14582 오늘도 졌다(Java)
    Park DJ
    Park DJ

    티스토리툴바