백준 1309 - 동물원

it/알고리즘 2019. 9. 1. 01:36 Posted by 하얀나다

경우의 수를 구하는 DP로 생각을 했다.

 

테이블을 [N][3] 크기로 만들고

 

[N][0] 이번 라인에 없는 경우

[N][1] 이번 라인은 왼쪽

[N][2] 이번 라인은 오른쪽

 

으로 생각 하고 문제를 품.

 

한방에 해결.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.util.Scanner;
 
public class Main {
 
    static int[][] caseArr;
    static int na = 9901;
    static int result;
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
 
        int N = sc.nextInt();
 
        caseArr = new int[N][3];
 
        for (int i = 0; i < caseArr[0].length; i++) {
            caseArr[0][i] = 1;
        }
 
        for (int i = 1; i < caseArr.length; i++) {
            for (int j = 0; j < caseArr[i].length; j++) {
                // 하나도 없는 경우
                caseArr[i][0= (caseArr[i - 1][0+ caseArr[i - 1][1+ caseArr[i - 1][2]) % na;
                // 왼쪽에 있는 경우
                caseArr[i][1= (caseArr[i - 1][0+ caseArr[i - 1][2]) % na;
                // 오른쪽에 있는 경우
                caseArr[i][2= (caseArr[i - 1][0+ caseArr[i - 1][1]) % na;
            }
        }
 
        result = ((caseArr[N - 1][0+ caseArr[N - 1][1+ caseArr[N - 1][2]) % na);
 
        System.out.println(result);
 
    }
 
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

하고 나서 보니 답에 규칙이 또 있는거 같아 줄여보았다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.Scanner;
 
public class Main {
 
    static int[] caseArr;
    static int na = 9901;
    static int result;
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
 
        int N = sc.nextInt();
 
        caseArr = new int[N + 1];
 
        caseArr[0= 1;
 
        caseArr[1= 3;
 
        for (int i = 2; i < caseArr.length; i++) {
            caseArr[i] = (caseArr[i-2+ (caseArr[i-1]*2)) % na;
        }
        
        System.out.println(caseArr[N]);
 
    }
 
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

 

메모리와 시간이 줄었음. 

 

역시 한방에 해결

'it > 알고리즘' 카테고리의 다른 글

백준 10026 - 적록색약  (0) 2019.09.01
백준 11057 - 오르막 수  (0) 2019.09.01
백준 4485 녹색 옷 입은 애가 젤다  (0) 2018.11.24
스택을 이용한 문제  (0) 2015.01.06
힙을 이용한 트리  (0) 2015.01.06