[백준 10942번] DP(다이나믹 프로그래밍) - 팰린드롬?

김민지·2023년 8월 2일
0

냅다 시작 백준

목록 보기
72/118

✨ 문제 ✨

✨ 정답 ✨

const { count } = require("console");
const fs = require("fs");
const { nextTick } = require("process");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./예제.txt";
let input = fs.readFileSync(filePath).toString().trim();


// const fs = require('fs'); 
// let input = fs.readFileSync("/dev/stdin").toString().trim();

input = input.split('\n')

const N = +input.shift();
const numbersArray = input.shift().split(" ").map((el) => +el);
const M = +input.shift();

const answer = [];
const dp = Array.from({ length: N }, () => new Array(N).fill(false));

for (let i = 0; i < N; i++) {
    dp[i][i] = true;
    if (i + 1 < N) {
        if (numbersArray[i] === numbersArray[i + 1]) {
            dp[i][i + 1] = true;
        } else {
            dp[i][i + 1] = false;
        }
    }
}

for (let j = 2; j < N; j++) {
    for (let i = 0; i < N - 1; i++) {
        if (numbersArray[i] !== numbersArray[j]){
            continue;
        }
        if (dp[i + 1][j - 1]){
            dp[i][j] = true;
        }
    }
}

input.forEach((el) => {
    const [src, dst] = el.split(" ").map(Number);
    if (dp[src - 1][dst - 1]) answer.push(1);
    else answer.push(0);
});

console.log(answer.join('\n'))



🧵 참고한 정답지 🧵

https://velog.io/@mk0504/%EB%B0%B1%EC%A4%80-10942%EB%B2%88-%ED%8C%B0%EB%A6%B0%EB%93%9C%EB%A1%AC-JavaScript
https://mygumi.tistory.com/176

💡💡 기억해야 할 점 💡💡

profile
이건 대체 어떻게 만든 거지?

1개의 댓글

comment-user-thumbnail
2023년 8월 2일

공감하며 읽었습니다. 좋은 글 감사드립니다.

답글 달기