프로그래머스(Programmers)

Level 3 > 2 x n 타일링

cepiloth 2018. 8. 20. 09:31
반응형

https://programmers.co.kr/learn/courses/30/lessons/12900


1. 문제


2. 알고리즘

키워드 - DP


* 문제 접근


N 이 1 일때 = 1

N 이 2 일때 = 2

N 이 3 일때 = 1+2

N 이 4 일때 = 1 + 2 + 2


DP[1] = 1;

DP[2] = 2;

DP[3] = DP[2] + DP[1];

DP[4] = DP[3] + DP[2];

DP[5] = DP[4] + DP[3];


키포인트

하지만 만약 답이 123456789라면 56789만 반환해주면 됩니다. 리턴하는 숫자의 앞자리가 0일 경우 0을 제외한 숫자를 리턴하세요.


경우의 수가 많기 때문에 해를 구하고 % 로 연산자로 절단이 필요 하다.

123456789 % 100000 = 56789



3. 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <string>
#include <vector>
 
using namespace std;
 
int solution(int n) {
    int answer = 0;
    int dp[600001= {0,};
  
    dp[1= 1;
    dp[2= 2;
    
    for(int i=3; i<=n;i++)
        dp[i] = (dp[i-2+ dp[i-1]) % 1000000007;
 
    answer = dp[n];
    return answer;
}
cs

반응형