몸과 마음이 건전한 SW 개발자

프로그래머스 [Lv. 3] 아방가르드 타일링 {언어 : JavaScript} [다시 풀어 보기] 본문

알고리즘/다시 풀어 보기

프로그래머스 [Lv. 3] 아방가르드 타일링 {언어 : JavaScript} [다시 풀어 보기]

스위태니 2024. 11. 14. 22:22

문제 링크

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

정답 코드

function solution(n) {
    const MOD = 1_000_000_007;
    const dp = [0, 1, 3, 10, 23, 62, 170];
    if (n < 7) {
        return dp[n];
    }
    for (let i = 7; i < n+1; i++) {
        const value = (dp.at(-1) + dp.at(-2) * 2 + dp.at(-3) * 6 + dp.at(-4) - dp.at(-6) + MOD) % MOD;
        dp.shift();
        dp.push(value);
    }
    
    const answer = dp.at(-1);
    return answer;
}

풀이 방법

https://ampersandor.tistory.com/21

 

[프로그래머스] 아방가르드 타일링 (파이썬)

0. 문제 설명 문제는 간단하게 말해서, 왼쪽 도형 세개를 이용하여 높이가 3이고 넓이가 n 인 사각형을 빈틈없이 채울 수 있는 가짓수를 찾아내는 문제이다. 문제는 간단하지만 풀이 과정은 너무

ampersandor.tistory.com

  1. 여기 풀이의 점화식을 보고 풀었다.
  2. 하지만 자바스크립트에서 마이너스가 생길 때 %를 할 경우 정밀도가 떨어지는 문제가 발생하여 각 계산마다 MOD를 더해주고 MOD로 나눈 나머지를 갱신했다.

느낀점

  • 점화식을 새우기 위해서는 n이 4, 5, 6일 때를 구해야 하는데 이게 실재 시험에서 가능할지 모르겠다.