문제 - https://www.acmicpc.net/problem/10844

 

10844번: 쉬운 계단 수

첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.

www.acmicpc.net

import java.io.*;
import java.util.*;

public class Main {

    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    static int N;
    static long[][] nums;
    static long cnt = 0;

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

        N = Integer.parseInt(br.readLine());
        nums = new long[N][10];

        for (int i = 1; i <= 9; i++) nums[0][i] = 1; // init
        for (int row = 1; row < N; row++) {
            nums[row][0] = nums[row-1][1];
            for (int i = 1; i <= 8; i++)
                nums[row][i] = (nums[row-1][i-1] + nums[row-1][i+1]) % 1000000000;
            nums[row][9] = nums[row-1][8];
        }
        for (long i : nums[N-1])
            cnt += i;

        bw.write(cnt%1000000000+"\n");
        bw.flush();
        bw.close();
        br.close();
    }
}

간단한 DP문제였지만, 자료형을 신경못써서 '맞는데 왜 틀렸지' 한참을 고민했다..

20억 미만이더라도 그냥 뭔가 좀 수상하다 싶으면 Long타입 쓰자!

'공부 > algorithm' 카테고리의 다른 글

BOJ 최종 순위(3665) - Java  (0) 2021.11.16
BOJ 회의실 배정(1931) - Java  (0) 2021.10.25
BOJ 내리막 길(1520) - Java  (0) 2021.10.20
BOJ RGB거리(1149) - Java  (0) 2021.10.20
BOJ 후보 추천하기(1713) - Java  (0) 2021.10.14

+ Recent posts