본문 바로가기
알고리즘 문제풀이/백준

[백준 1309] 동물원(JAVA)

by 소보루:-) 2020. 3. 18.

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

 

1309번: 동물원

첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다.

www.acmicpc.net

 

 

 

dp[N][3] 배열은 만들어 dp[i][1]에는 i번째 첫번째 열에 사자를 넣을 수 있는 경우의 수,

dp[i][2]에는 i번째 두번째 열에 사자를 넣을 수 있는 경우의 수,

dp[i][0]에는 i번째 줄에 사자를 하나도 넣지 않은 경우의 수가 들어가도록 해줬다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

	final static int MOD=9901;
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(br.readLine());
		int[][] dp=new int[N][3]; //0두칸모두빈칸, 1 왼쪽칸에 배치, 2오른쪽칸에 배치
		dp[0][0]=1;
		dp[0][1]=1;
		dp[0][2]=1;
		for(int i=1; i<N; i++) {
			dp[i][0]=(dp[i-1][0]+dp[i-1][1]+dp[i-1][2])%MOD;//이전 배치에 모두 가능
			dp[i][1]=(dp[i-1][0]+dp[i-1][2])%MOD;//이전 경우의 같은 열에 둔 경우 제외하고 가능
			dp[i][2]=(dp[i-1][0]+dp[i-1][1])%MOD;//이전 경우의 같은 열에 둔 경우 제외하고 가능
		}
		System.out.println((dp[N-1][0]+dp[N-1][1]+dp[N-1][2])%MOD);

	}

}

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준 8979] 올림픽(JAVA)  (0) 2020.03.21
[백준 14501] 퇴사(JAVA/C++)  (0) 2020.03.20
[백준 1543] 문서 검색(JAVA)  (0) 2020.03.17
[백준 2186] 문자판(JAVA)  (0) 2020.03.16
[백준 6118] 숨바꼭질(JAVA)  (0) 2020.03.16

댓글