문제 위치 : https://school.programmers.co.kr/learn/courses/30/lessons/12900
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
DP 문제이다.
왜냐하면 i칸을 채우는 방법은 i-1 칸을 채우는 방법과 i-2 칸을 채우는 방법을 더한 것과 같으므로 점화식으로 풀 수 있다.
이는 결국 마지막 칸을 마무리하는데 있어 세로 두 칸 가로 한 칸 짜리 블록으로 채울 것인가 세로 한 칸 가로 두 칸짜리 블록을 쌓아 넣을 것인가로 갈리는데서 기인힌다.
#include <string>
#include <vector>
using namespace std;
int solution(int n) {
vector<int> DP = {1, 1, 2};
for(int i = 3; i<=n;i++){
int tmp = DP[i-1]+DP[i-2];
tmp %= 1000000007;
DP.push_back(tmp);
}
return DP.back();
}
'문제 풀이 > 문제 풀이(프로그래머스)' 카테고리의 다른 글
124 나라의 숫자 (0) | 2025.02.03 |
---|---|
스택/큐 > 다리를 지나는 트럭 (0) | 2025.02.01 |
Summer/Winter Coding(~2018) > 방문 길이 (1) | 2025.01.17 |
깊이/너비 우선 탐색(DFS/BFS) > 게임 맵 최단거리 (0) | 2025.01.17 |
2018 KAKAO BLIND RECRUITMENT > [3차] n진수 게임 (0) | 2025.01.15 |