티스토리 뷰

 

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

 

1189번: 컴백홈

첫 줄에 정수 R(1 ≤ R ≤ 5), C(1 ≤ C ≤ 5), K(1 ≤ K ≤ R×C)가 공백으로 구분되어 주어진다. 두 번째부터 R+1번째 줄까지는 R×C 맵의 정보를 나타내는 '.'과 'T'로 구성된 길이가 C인 문자열이 주어진다

www.acmicpc.net

const fs = require('fs');
const input = fs.readFileSync("./dev/stdin").toString().trim().split("\n");
const [N, M, K] = input.shift().split(' ').map(Number);
const board = input.map(v => v.trim().split(''));

/// start: [N-1,0]
// end: [0,M-1];
const dx = [0, 0, 1, -1];
const dy = [1, -1, 0, 0];

let visited = Array.from(Array(N), () => Array(M).fill(false));
visited[N - 1][0] = true;

const answer = [];
function dfs(x, y, cnt) {
  if (x == 0 && y == M - 1) {
    answer.push(cnt);
    return;
  }
  cnt++;
  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 && !visited[nx][ny] && board[nx][ny] != 'T') {
      visited[x][y] = true;
      dfs(nx, ny, cnt)
      visited[x][y] = false;
    }
  }
}

dfs(N - 1, 0, 1)


console.log(answer.filter(v => v == K).length)
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함