https://www.acmicpc.net/problem/11726
11726번: 2×n 타일링
2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
www.acmicpc.net
풀이
# 2x1
2x1 1개
1가지 경우의 수
# 2x2
2x1 2개
1x2 2개
2가지 경우의 수
# 2x3
3가지 경우의 수
# 2x4
5가지 경우의 수
......
점화식
dp[n] = dp[n-2] + dp[n-1] 도출 가능
public void solution11726() throws Exception{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(reader.readLine());
int dp[] = new int[1001];
dp[1]=1;
dp[2]=2;
for(int i=3; i<=n; i++){
dp[i] = (dp[i-1]+dp[i-2])%10007;
}
System.out.println(dp[n]);
}
여기서 주의할 점 !!
dp 배열 크기를 n+1 로 잡으면 런타임 에러 (ArrayIndexOutOfBounds) 발생하기 때문에
입력의 최대값인 1000 + 1 의 길이로 최대 배열 생성 후 사용
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[백준] 내리막길 Java (0) | 2023.08.31 |
---|---|
[백준] 퇴사 2 Java (0) | 2023.08.31 |
[백준] 1, 2, 3 더하기 Java (0) | 2023.08.30 |
[백준] 계단 오르기 Java (0) | 2023.08.29 |
[백준] 가운데를 말해요 Java (0) | 2023.07.17 |