티스토리 뷰
https://www.acmicpc.net/problem/16929
16929번: Two Dots
첫째 줄에 게임판의 크기 N, M이 주어진다. 둘째 줄부터 N개의 줄에 게임판의 상태가 주어진다. 게임판은 모두 점으로 가득차 있고, 게임판의 상태는 점의 색을 의미한다. 점의 색은 알파벳 대문
www.acmicpc.net
const fs = require("fs");
const input = fs.readFileSync("./dev/stdin").toString().trim().split("\n");
const [N, M] = input.shift().split(" ").map(Number);
const board = input.map((r) => r.split(""));
let visited = Array.from(Array(N), () => Array(M).fill(false));
const dx = [1, -1, 0, 0];
const dy = [0, 0, -1, 1];
let cycle = false;
let sx;
let sy;
const dfs = (x, y, px, py, cnt) => {
if (cycle) return;
for (let i = 0; i < 4; i++) {
const nx = x + dx[i];
const ny = y + dy[i];
if (
nx < 0 ||
nx >= N ||
ny < 0 ||
ny >= M ||
board[nx][ny] != board[x][y] ||
(nx == px && ny == py)
)
continue;
if (!visited[nx][ny]) {
visited[nx][ny] = true;
dfs(nx, ny, x, y, cnt + 1);
visited[nx][ny] = false;
} else if (cnt >= 4 && visited[nx][ny]) {
cycle = true;
return;
}
}
};
for (let i = 0; i < N; i++) {
for (let j = 0; j < M; j++) {
visited[i][j] = true;
dfs(i, j, -1, -1, 1);
visited[i][j] = false;
if (cycle) break;
}
if (cycle) break;
}
console.log(cycle ? "Yes" : "No");
728x90
'자료구조 알고리즘 > 백준' 카테고리의 다른 글
Node.js) 백준 13549번: 숨바꼭질 3 (0) | 2022.07.02 |
---|---|
Node.js) 백준 16947번: 서울 지하철 2호선 (0) | 2022.07.01 |
Node.js)백준 13398번: 연속합 2 (0) | 2022.06.28 |
Node.js)백준 16235번: 나무 재테크 (0) | 2022.06.26 |
Node.js) 백준 15988번: 1, 2, 3 더하기 3 (0) | 2022.06.24 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- KMP
- 면접질문
- 최소공통조상
- MOD
- 로드나인
- 면접비
- 개발자면접
- node.js
- 롱베케이션
- 그래프
- 투포인터 연습
- BFS
- 다이나믹프로그래밍
- 서버점검
- create db
- DB 생성
- MySQL
- 서버개발
- 다이나밍프로그래밍
- 투포인터
- create databases;
- 은둔청년체험
- 동적프로그래밍
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함