728x90
https://programmers.co.kr/learn/courses/30/lessons/12900
코딩테스트 연습 - 2 x n 타일링
가로 길이가 2이고 세로의 길이가 1인 직사각형모양의 타일이 있습니다. 이 직사각형 타일을 이용하여 세로의 길이가 2이고 가로의 길이가 n인 바닥을 가득 채우려고 합니다. 타일을 채울 때는
programmers.co.kr
- 문제

문제
풀이
- n이 최대 60000까지 인 DP문제이다
- 예전에 백준에서 한번 풀어본 경험이 있어 금방 해결할 수 있었다
- n = 1 경우의 수 : 1*2 짜리 한개만 올 수 있다
- n = 2 경우의 수 : (1*2 짜리 2개), (2*1 짜리 2개) , 총 2개의 경우의 수
- n = 3 경우의 수 : (n =1 경우의 수, 2*1 짜리 2개) , ( n = 2 경우의 수 , 1*2 짜리 한 개)
- 점화식 = dp[n-2] + dp[n-1]
-
public static int solution(int n) { int[] dp = new int[n+1]; dp[1] = 1; dp[2] = 2; for(int i=3;i<=n;++i) { dp[i] = (dp[i-2] + dp[i-1])% 1000000007; //(n-2번째 + 2*1 짜리 2개 + n-1번째 + 1*2짜리 1개) } return dp[n]; }
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| LEVEL 3 : 이중우선순위큐 (0) | 2021.12.12 |
|---|---|
| LEVEL 3 : 금과 은 운반하기 (0) | 2021.12.12 |
| LEVEL 3 : 불량 사용자 (0) | 2021.12.11 |
| LEVEL 3 : 보석쇼핑 (0) | 2021.12.08 |
| LEVEL 3 : 표 편집 (0) | 2021.12.08 |