장성호's
장성호's blog
장성호's
  • 분류 전체보기
    • 알고리즘
      • 백준
      • 이론
    • WEB
      • Spring 인강
      • 네트워크
    • 개인 프로젝트
      • 쇼핑몰 만들기

블로그 메뉴

  • 홈
  • 깃허브
전체 방문자
오늘
어제
반응형
hELLO · Designed By 정상우.
장성호's

장성호's blog

[C++] BOJ 10844 쉬운 계단 수
알고리즘/백준

[C++] BOJ 10844 쉬운 계단 수

2021. 12. 29. 14:40
반응형

 

 

문제 출처

백준 온라인 저지

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

 

10844번: 쉬운 계단 수

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

www.acmicpc.net

 

문제 

 

문제 입 / 출력

 

풀이

DP를 활용해서 푼다

  • 마지막 자리 수가 0로 끝나는 경우에는 맨 뒷자리 수가 1인 경우만 가능
    dp[i][j] = dp[i -1][1];
  • 마지막 자리 수가 9로 끝나는 경우에는 맨 뒷자리 수가 8인 경우만 가능
    dp[i][j] = dp[i -1][8];
  • 마지막 자리 수가 2 ~ 8 로 끝나는 경우에는 맨 뒷자리 수가 그 수 뒤의 앞 뒤일 경우 가능
    dp[i][j] = dp[i -1][j-1] + dp[i -1][j + 1];

 

코드

#include <iostream>

using namespace std;

int dp[101][10];
const int mod = 1000000000;

int main() {
  int n;
  long long result = 0;
  cin >> n;

  for (int i = 1; i <= 9; i++)
    dp[1][i] = 1;

  for (int i = 2; i <= n; i++) {
    for (int j = 0; j <= 9; j++) {
      if (j == 0)
        dp[i][j] = dp[i - 1][1];
      else if (j == 9)
        dp[i][j] = dp[i - 1][8];
      else
        dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j + 1]);
      dp[i][j] %= mod;
    }
  }

  for (int i = 0; i <= 9; i++) {
    result += dp[n][i];
  }

  cout << result % mod << "\n";
}

반응형
저작자표시 비영리 변경금지 (새창열림)

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

[C++] BOJ 2193 이친수  (0) 2021.12.29
[C++] BOJ 11057 오르막 수  (0) 2021.12.29
[C++] BOJ 9095 1, 2, 3 더하기  (0) 2021.12.28
[C++] BOJ 11726번 2*N 타일링 2  (0) 2021.12.28
[C++] BOJ 11726번 2*N 타일링  (0) 2021.12.27
    '알고리즘/백준' 카테고리의 다른 글
    • [C++] BOJ 2193 이친수
    • [C++] BOJ 11057 오르막 수
    • [C++] BOJ 9095 1, 2, 3 더하기
    • [C++] BOJ 11726번 2*N 타일링 2
    장성호's
    장성호's
    장성호's 개발 공부 블로그

    티스토리툴바