ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.