본문 바로가기
👥
총 방문자
📖
0개 이상
총 포스팅
🧑
오늘 방문자 수
📅
0일째
블로그 운영

여러분의 방문을 환영해요! 🎉

다양한 개발 지식을 쉽고 재미있게 알려드리는 블로그가 될게요. 함께 성장해요! 😊

백준 문제풀이/Nodejs

[백준][dp] 1937 욕심쟁이 판다 NodeJs 구현

by 꽁이꽁설꽁돌 2025. 1. 9.
728x90
반응형
     

목차

  1. 문제
  2. 문제 구현 방향
  3. 코드 구현

 

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

문제

 

 

문제 구현 방향

dfs bfs로 풀면 유다희.. dp로 풀어야 하는 문제이다.

이전 방문의 누적을 한 값을 더해주자 dp는 여전히 어렵다..

 

 

코드 구현

javascript
const input = require("fs")
  .readFileSync("./dev/stdin", "utf-8")
  .trim()
  .split("\n");


let board = [];
let idx = 1;
let N = +input[0];

let dx = [0, 0, 1, -1];
let dy = [1, -1, 0, 0];
let dp = Array.from({ length: N }, () => Array(N).fill(0));
let ans = 0;

while (idx < input.length) {
  let p = input[idx].trim().split(" ").map(Number);
  board.push(p);
  idx++;
}

function moving(x, y) {
  if (dp[y][x]) return dp[y][x];
  dp[y][x] = 1;
  for (let i = 0; i < 4; i++) {
    let nx = x + dx[i];
    let ny = y + dy[i];
    if (nx < 0 || nx > N - 1 || ny < 0 || ny > N - 1) continue;
    if (board[ny][nx] < board[y][x]) {
      dp[y][x] = Math.max(dp[y][x], moving(nx, ny, dp) + 1);
    }
  }
  return dp[y][x];
}

for (let i = 0; i < N; i++) {
  for (let j = 0; j < N; j++) {
    ans = Math.max(ans, moving(i, j, dp));
  }
}
console.log(ans);
반응형