프로그래밍 공부

BOJ/백준 13301 타일 장식물 본문

Problem Solving/Baekjoon Online Judge

BOJ/백준 13301 타일 장식물

khj1999 2024. 10. 11. 09:03

https://www.acmicpc.net/problem/13301

 

해결 아이디어

그림을 보다보면 규칙이 보여서 규칙을 찾아서 해결 했다. dp식을 세울 수 있는 방법은 2가지가 있다

 

dp[n] * 4 + dp[n-1] * 2로 세우거나

 

dp[n] * 3 + dp[n - 1] * 3 + dp[n - 2] 이런식으로 계산 하는 방법도 있다.

 

import java.io.*;

public class _13301 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        long n = Long.parseLong(br.readLine());
        long[] dp = new long[(int)n];
        if(n == 1){
            bw.write(4 + "");
        }
        else if(n == 2){
            bw.write(6 + "");
        }
        else{
            dp[0] = 1;
            dp[1] = 1;
            for(int i = 2; i < n; i++){
                dp[i] = dp[i - 1] + dp[i - 2];
            }
            // long ans = dp[(int)n - 1] * 3 + dp[(int)n - 2] * 3 + dp[(int)n - 3];
            long ans = dp[(int)n - 1] * 4 + dp[(int)n - 2] * 2;
            bw.write(ans + "");
        }
        bw.flush();
        bw.close();
    }
}

 

 

문제 조건에 long long을 적용하라는 이야기가 있어서 long변수를 사용했고, 배열 인덱스는 0부터 시작하니 -1을 다 해줬다.

Comments