[백준][파이썬] 쉬운 계단 수 10844

2023. 1. 9. 12:00·백준 알고리즘/dp
728x90

 

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

 

10844번: 쉬운 계단 수

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

www.acmicpc.net

n=1 : (1)

n=2 : (1, 2), (1, 0)

n=3 : (1, 2, 1), (1, 2, 3), (1, 0, 1)

.

.

.

 

자세히 보면 어떠한 규칙이 존재한다.

 

먼저 n이 1에서 2로 넘어갈 때를 보자.

 

n=1 에서 1 하나만 존재하는데 문제의 조건을 만족하기 위해서는 1다음에 1+1과 1-1이 존재해야한다.

 

n이 2에서 3으로 넘어갈 때도 보자.

 

(1, 2)에서 문제를 조건을 만족하기 위해서는 1, 2 다음에 2+1과 2-1이 존재해야한다.

 

(1, 0)에서는 1, 0 다음에 0+1과 0-1이 존재해야하는데 0-1은 음수이므로 불가능하다.

 

즉 이 문제는 가장 끝 숫자를 기준으로 다음 숫자를 결정할 수 있다.

 

0과 9의 경우 그 다음 경우의 수가 하나 밖에 없지만 1에서 8까지는 경우의 수가 두 개 있다.

 

이제 배열을 만들건데 배열의 인덱스는 곧 가장 끝 숫자이다.

 

n=3 : (1, 2, 1), (1, 2, 3), (1, 0, 1)

 

이 경우 끝 숫자가 1이 2개 3이 하나이므로 배열로 나타내면 아래와 같다.

 

0 1 2 3 4 5 6 7 8 9
0 2 0 1 0 0 0 0 0 0

 

이제 알고리즘을 일반화할 차례이다.

 

길이가 n이고 끝 숫자가 m인 계단 수는 길이가 (n-1)이고 끝 숫자가 (m-1)인 계단 수와 길이가 (n-1)이고 끝 숫자가 (m+1)인 계단 수의 합이다.(1<= m <=8)

 

이를 코드로 나타내면 아래와 같다.

n=int(input())
dp = [1]*10
dp2 = [1]*10
dp[0]=0
for _ in range(n-1):
    for i in range(10):
        if i==0:
            dp2[i]=dp[i+1]
        elif i==9:
            dp2[i]=dp[i-1]
        else:
            dp2[i]=dp[i-1]+dp[i+1]
    dp = dp2.copy()
print(sum(dp)%1000000000)
728x90

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

[백준 1699][파이썬] 제곱수의 합  (0) 2023.01.14
[백준 1912][파이썬] 연속 합  (0) 2023.01.13
[백준 11055, 11722, 11054][파이썬] 증가, 감소하는 수열 dp 문제  (0) 2023.01.11
[백준][파이썬] 알고리즘 문제 풀이 용 파이썬 문법 (업데이트 중)  (0) 2023.01.08
[백준][파이썬] 기초 별 찍기 문제 유형 팁  (2) 2023.01.07
'백준 알고리즘/dp' 카테고리의 다른 글
  • [백준 1912][파이썬] 연속 합
  • [백준 11055, 11722, 11054][파이썬] 증가, 감소하는 수열 dp 문제
  • [백준][파이썬] 알고리즘 문제 풀이 용 파이썬 문법 (업데이트 중)
  • [백준][파이썬] 기초 별 찍기 문제 유형 팁
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    RNN
    bfs
    Merge
    influxDB CLI
    ChatPromptTemplate
    code tree
    binary search
    Vector Store
    ci/cd
    nn.RNN
    파이썬
    푸쉬 알람
    스프링 OAuth2
    codetree
    스택
    openvidu 배포
    parametric search
    다익스트라
    AWS Lambda
    embedding
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[백준][파이썬] 쉬운 계단 수 10844
상단으로

티스토리툴바