백준 / 10844번 / 쉬운 계단 수 / python 파이썬

2025. 8. 8. 13:57·Coding Test/Baekjoon

 

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

 

 

 

 

 

 


나의 풀이

n = int(input())
dp = [[0] * 10 for _ in range(n + 1)]

for i in range(1, 10):
    dp[1][i] = 1

for i in range(2, n + 1):
    for j in range(10):
        if j == 0:
            dp[i][j] = dp[i - 1][1]
        elif 1 <= j <= 8:
            dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j + 1]
        else:
            dp[i][j] = dp[i - 1][8]

print(sum(dp[n]) % 1000000000)

 

이 문제는 인접한 수의 차이가 1인 수를 계단수라고 하고, 길이가 N인 계단 수의 개수를 구하는 문제로, DP를 사용하여 풀 수 있습니다.

dp[i][j]를 길이가 i, 마지막 숫자가 j인 계산 수의 개수로 정의하면, 계단 수 조건을 만족하기 위해 이전 자리에서 올 수 있는 숫자는 j+1, j-1이므로 점화식은 dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1]로 표현됩니다. 이때 j가 0 또는 9일 경우 각각 1, 8만 올 수 있습니다. 

 

초기값으로는 한 자리 계단 수인 1부터 9까지는 각 1개씩 존재하므로 dp[1][1]부터 dp[1][9]까지는 1로 초기화하고, 0은 시작 숫자가 될 수 없으므로 dp[1][0]은 제외합니다. 이후 길이가 2부터 N까지인 경우에 대해 점화식을 반복적으로 적용하면서 dp 테이블을 채워나갑니다. 마지막으로 길이가 N인 모든 계단 수의 개수는 문제 조건에 따라 1,000,000,000으로 나눈 나머지를 출력하여 구합니다.

 

 

'Coding Test > Baekjoon' 카테고리의 다른 글

백준 / 10026번 / 적록색약 / python 파이썬  (3) 2025.08.13
백준 / 2470번 / 두 용액 / python 파이썬  (1) 2025.08.12
백준 / 1012번 / 유기농 배추 / python 파이썬  (3) 2025.08.06
백준 / 5347번 / LCM / python 파이썬  (0) 2025.08.03
백준 / 9465번 / 스티커 / python 파이썬  (3) 2025.07.30
'Coding Test/Baekjoon' 카테고리의 다른 글
  • 백준 / 10026번 / 적록색약 / python 파이썬
  • 백준 / 2470번 / 두 용액 / python 파이썬
  • 백준 / 1012번 / 유기농 배추 / python 파이썬
  • 백준 / 5347번 / LCM / python 파이썬
seulll
seulll
개인 공부 블로그입니다.
  • seulll
    seulll
    seulll
  • 전체
    오늘
    어제
  • Seuli's Github
    • 분류 전체보기 (398)
      • Coding Test (260)
        • Programmers (164)
        • Baekjoon (94)
      • Data Structures & Algorithm.. (15)
      • Development & Projects (59)
        • Python (5)
        • Java (15)
        • Android (5)
        • AI (6)
        • Unity (3)
        • API (5)
      • OS (5)
      • DB | SQL (7)
      • Network (8)
      • Data Analysis (14)
      • Study | etc (21)
  • 블로그 메뉴

    • 홈
    • 태그
    • 글쓰기
    • 설정
  • 공지사항

  • 인기 글

  • 태그

    오블완
    오차행렬
    Greedy
    백엔드 개발자 역량
    파이썬
    백엔드
    티스토리챌린지
    kakao map api
    Python
    야근 지수
    박스플롯
    asterisk
    대입 표현식
    코딩테스트
    confusion matrix
    train_test_split
    프렌즈4블록
    웹크롤링
    API
    프로그래머스
    바다코끼리
    데이터분석
    Boxplot
    그리디 알고리즘
    모델 성능 평가
    카카오맵
    2 x n 타일링
    백엔드 개발자
    카카오맵 api
    solving environment
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
seulll
백준 / 10844번 / 쉬운 계단 수 / python 파이썬
상단으로

티스토리툴바