알고리즘 문제 풀기

프로그래머스: 산 모양 타일링 - javascript(dp)

Fo_rdang 2024. 7. 15. 17:56
반응형

문제 출처 

https://school.programmers.co.kr/learn/courses/30/lessons/258705

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이 힌트 

정답 풀이 코드 

function solution(n, tops) {
  const MOD = 10007;
  const dp = new Array(n + 1).fill().map(() => new Array(2).fill(0));

  dp[0][0] = 1;

  for (let i = 0; i < n; i += 1) {
    if (tops[i]) {
      dp[i + 1][0] = dp[i][0] * 3 + dp[i][1] * 2;
    } else {
      dp[i + 1][0] = dp[i][0] * 2 + dp[i][1] * 1;
    }

    dp[i + 1][1] = dp[i][0] + dp[i][1];

    dp[i + 1][0] %= MOD;
    dp[i + 1][1] %= MOD;
  }

  return (dp[n][0] + dp[n][1]) % MOD;
}

Only 풀이 코드 

function solution(n, tops) {
  const MOD = 10007;
  const dp = new Array(n + 1).fill().map(() => new Array(2).fill(0));

  dp[0][0] = 1;

  for (let i = 0; i < n; i += 1) {
    if (tops[i]) {
      dp[i + 1][0] = dp[i][0] * 3 + dp[i][1] * 2;
    } else {
      dp[i + 1][0] = dp[i][0] * 2 + dp[i][1] * 1;
    }

    dp[i + 1][1] = dp[i][0] + dp[i][1];

    dp[i + 1][0] %= MOD;
    dp[i + 1][1] %= MOD;
  }

  return (dp[n][0] + dp[n][1]) % MOD;
}
반응형