티스토리 뷰

728x90

문제 링크

www.acmicpc.net/problem/10844

 

10844번: 쉬운 계단 수

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

www.acmicpc.net

 

풀이

(마지막 수 $\pm$ 1)의 방향으로 전개합니다.

길이가 $n$이 될 때까지 전개 가능하면 1을 리턴합니다.

 

0으로 시작하는 수는 없다는 것에 주의하세요.

해당 처리를 line 16 ~ 22에서 했습니다.

정답 코드

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int n;
ll d[111][10];
const int MOD = 1'000'000'000;

ll go(int l, int last) {
    if (last < 0 || last > 9) return 0;
    if (l == n) return 1;

    ll &ret = d[l][last];
    if (ret != -1) return ret;
    ret = 0;
    if (l == 0 && last == 0) {
        for (int i = 1; i < 10; i++) {
            ret += go(l + 1, i);
            ret %= MOD;
        }
        return ret;
    }
    ret = go(l + 1, last + 1) + go(l + 1, last - 1);
    ret %= MOD;
    return ret;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    memset(d, -1, sizeof(d));
    cin >> n;
    cout << go(0, 0);
}

 

728x90

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

[BOJ] 백준 1644 소수의 연속합  (0) 2021.03.08
[BOJ] 백준 1562 계단 수  (0) 2021.03.07
[BOJ] 백준 1516 게임 개발  (0) 2021.03.07
[BOJ] 백준 1509 팰린드롬 분할  (0) 2021.03.07
[BOJ] 백준 10942 팰린드롬?  (0) 2021.03.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
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
글 보관함