-
11726번 - 2×n 타일링알고리즘/백준 2023. 6. 22. 21:07
1️⃣ DP
✏️ 풀이 과정
DFS 대신 다이나믹 프로그래밍을 이용해야 시간초과가 나지 않는 문제입니다.
기본적인 아이디어는 수열을 생각하면 됩니다. 3 이상의 n에 대해 방법의 개수를 f(n)이라고 하면
n번째가 만들어지는 경우의 수는 바로 이전에서 1개짜리 타일을 더하는 것과 두 칸 이전에서 2개짜리 타일을 더하는 것 뿐입니다. 그렇기 때문에 f(n) = f(n-1) + f(n-2)가 되고 배열을 통해서 간단하게 계산할 수 있습니다.
계산이후 n번째 인덱스를 출력하면 해결됩니다. 이 때 n=1, 2일 때 에러가 발생하지 않도록 주의해야 합니다.
💻 코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int[] dp = new int[n+1]; dp[1] = 1; if(n > 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]); br.close(); } }
'알고리즘 > 백준' 카테고리의 다른 글
17219번 - 비밀번호 찾기 (0) 2023.06.24 11727번 - 2×n 타일링 2 (0) 2023.06.23 11724번 - 연결 요소의 개수 (0) 2023.06.21 11723번 - 집합 (0) 2023.06.21 11403번 - 경로 찾기 (0) 2023.06.21