• 문제 링크
16929번: Two Dots
첫째 줄에 게임판의 크기 N, M이 주어진다. 둘째 줄부터 N개의 줄에 게임판의 상태가 주어진다. 게임판은 모두 점으로 가득차 있고, 게임판의 상태는 점의 색을 의미한다. 점의 색은 알파벳 대문
www.acmicpc.net
• 풀이 과정
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main {
static int n, m;
static String[] dots;
static boolean[][] visit;
static int[] dy = {-1, 1, 0, 0};
static int[] dx = {0, 0, -1, 1};
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
dots = new String[n];
visit = new boolean[n][m];
for (int i = 0; i < n; i++)
dots[i] = br.readLine();
boolean isCycle = false;
loop:
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (visit[i][j])
continue;
isCycle = dfs(i, j, -1, -1);
if (isCycle)
break loop;
}
}
bw.write((isCycle ? "Yes" : "No"));
bw.flush();
}
private static boolean dfs(int y, int x, int py, int px) {
if (visit[y][x])
return true;
visit[y][x] = true;
for (int i = 0; i < 4; i++) {
int ny = y + dy[i];
int nx = x + dx[i];
if (ny < 0 || ny >= n || nx < 0 || nx >= m)
continue;
if (ny == py && nx == px)
continue;
if (dots[y].charAt(x) == dots[ny].charAt(nx)) {
if (dfs(ny, nx, y, x))
return true;
}
}
return false;
}
}'Problem Solving > Baekjoon' 카테고리의 다른 글
| [백준] 16948 데스 나이트 - Graph Theory / Java (0) | 2022.10.07 |
|---|---|
| [백준] 16928 뱀과 사다리 게임 - Graph Theory / Java (0) | 2022.10.06 |
| [백준] 14226 이모티콘 - Graph Theory / Java (0) | 2022.10.04 |
| [백준] 1707 이분 그래프 - Graph Theory / Java (0) | 2022.10.03 |
| [백준] 1261 알고스팟 - Graph Theory / Java (0) | 2022.10.02 |
댓글