프로그래머스(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 |
반응형