[프로그래머스] Level 3 2xn 타일링 (JAVA)
문제
풀이
처음에는 하나씩 증가시키려다가 당연히 시간초과가 날 것 같아서, 가로 두 칸짜리 블록의 개수에 따라서 직접 경우의 수를 구하고 답을 다 더하도록 코드를 짜봤다.
그런데도 계속 오답이 떠서 그 방법도 포기하고 개수를 하나하나 세어보니 증가하는 수들 사이에서 피보나치 규칙을 찾을 수 있었다. 그래서 dp
배열을 선언하고 MOD
연산도 해서 반복문으로 값을 저장하도록 했다.
규칙만 찾으면 쉽게 풀 수 있었을텐데, 규칙을 찾기 전까지 삽질을 꽤 했던 문제였다.
코드
class Solution {
private static final int MOD = 1000000007;
private static int[] dp = new int[60001];
public int solution(int n) {
dp[0] = 1;
dp[1] = 1;
for (int i = 2; i <= n; i++) dp[i] = (dp[i - 1] + dp[i - 2]) % MOD;
return dp[n];
}
}
Author And Source
이 문제에 관하여([프로그래머스] Level 3 2xn 타일링 (JAVA)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jwkim/2xn-tile저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)