반응형
문제
2 ×n 크기의 직사각형을 1 × 2, 2 ×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오.
아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.
입력
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)
출력
첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.
테스트 케이스
접근
dp문제이므로 규칙을 찾으려고 노력했습니다.
다음과 같이 f(n) = f(n-1) +f(n-2) 규칙을 찾아내어 코드로 옮기니 성공하였습니다.
코드
import java.awt.desktop.SystemEventListener;
import java.io.*;
import java.math.*;
import java.util.*;
public class Main {
/*
11726 problem
*/
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int num = Integer.parseInt(br.readLine());
ArrayList<Integer> arr = new ArrayList<>();
arr.add(1);
arr.add(2);
if(num>2)
for(int i=2;i<num;i++) {
arr.add((arr.get(i-1)+arr.get(i-2))%10007);
}
bw.write(String.valueOf(arr.get(num-1)));
bw.flush();
bw.close();
}
}
주의
10007로 나누어주는 과정이 필요합니다.
또한 미리미리 10007로 나누어 저장하지 않는다면 오버플로우가 발생할 수 있습니다.
반응형
'공부 정리 > 백준' 카테고리의 다른 글
[백준] 자바 11053 가장 긴 증가하는 부분 수열 (0) | 2021.07.22 |
---|---|
[백준] 자바 2579 계단 오르기 (0) | 2021.07.21 |
[백준] 자바 9095 1, 2, 3 더하기 (0) | 2021.07.19 |
[백준] 자바 10866 덱 (0) | 2021.07.19 |
[백준] 자바 16165 걸그룹 마스터 준석이 (0) | 2021.07.16 |
댓글