삐까냥의 파도타기

Q2133. 타일 채우기 본문

코딩/백준 알고리즘

Q2133. 타일 채우기

금손형아 2019. 2. 23. 18:00

타일을 저장하며 나아가는 로직


점화식 dp[i] = dp[i-2]*3 + dp[i-4]*2 + ... dp[2]*2 + 2


매 타일마다 new 타일 2개가 추가되므로, +2

dp[i-2] 타일 뒤에 올 수 있는 타일이 3가지 있으므로, +dp[i-2]*3

dp[i-4] 타일 뒤에 올 수 있는 타일은 dp[4]의 new 타일 2개 이므로, +dp[i-4]*2

dp[i-6] 타일 뒤에 올 수 있는 타일은 dp[6]의 new 타일 2개 이므로, +dp[i-6]*2

.

.

.

dp[2] 타일 뒤에 올 수 있는 타일은 dp[i-2]의 new 타일 2개 이므로, +dp[2]*2



import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.StringTokenizer;


public class Q2133 {


static long[] array;

public static void main(String[] args) throws Exception {

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

StringTokenizer st = new StringTokenizer(br.readLine());


int num = Integer.parseInt(st.nextToken());

array = new long[31];

array[2] = 3;

if (num%2 == 0) {

for (int i = 4; i <= num; i += 2) {

for (int j = i-2; j >= 2; j -= 2) {

if (j == i-2) {

array[i] += array[j]*3;

} else {

array[i] += array[j]*2;

}

}

array[i] += 2;

}

System.out.println(array[num]);

} else {

System.out.println(0);

}

}


'코딩 > 백준 알고리즘' 카테고리의 다른 글

Q9252. LCS 2  (0) 2019.02.23
Q9251. LCS  (0) 2019.02.23
Q1699. 제곱수의 합  (0) 2019.02.23
Q1904. 01타일  (0) 2019.02.23
Q2096. 내려가기  (0) 2019.02.23