삐까냥의 파도타기
Q1309. 동물원 본문
다음 칸에 올 수 있는 개수를 저장하며 나아가는 로직
2*1 배열에는 1. 왼쪽칸, 2. 오른쪽칸, 3. 빈칸 총 3가지 경우의 수가 있으며,
1(왼쪽칸) 다음 행에는 2(오른쪽칸), 3(빈칸)이 올 수 있습니다.
2(오른쪽칸) 다음 행에는 1(왼쪽칸), 3(빈칸)이 올 수 있습니다.
3(빈칸) 다음 행에는 1(왼쪽칸), 2(오른쪽칸)이 올 수 있습니다.
이와같은 로직을 구현하면 됩니다.
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Q1309 { static long[][] dp; 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()); dp = new long[num+1][3]; dp[1][0] = 1; dp[1][1] = 1; dp[1][2] = 1;
for (int i = 2; i <= num; i++) { dp[i][0] = (dp[i-1][1] + dp[i-1][2]) % 9901; dp[i][1] = (dp[i-1][0] + dp[i-1][2]) % 9901; dp[i][2] = (dp[i-1][0] + dp[i-1][1] + dp[i-1][2]) % 9901; }
long result = 0; for (int i = 0; i < 3; i++) { result = (result + dp[num][i]) % 9901; } System.out.println(result); } } |
'코딩 > 백준 알고리즘' 카테고리의 다른 글
Q1915. 가장 큰 정사각형 (0) | 2019.02.21 |
---|---|
Q6359. 만취한 상범 (0) | 2019.02.21 |
Q11054. 가장 긴 바이토닉 부분 수열 (0) | 2019.02.19 |
Q1965. 상자넣기 (0) | 2019.02.18 |
Q14501. 퇴사 (0) | 2019.02.17 |