일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- java #자바 #동빈나
- java #자바 #나동빈
- 파이썬 #백준 #알고리즘 #코딩테스트
- 다익스트라
- BFS
- java #자바 #생활코딩
- DFS
- 백준
- 재귀
- 자바 #java
- dp
- react #리액트 #동빈나 #나동빈 #유튜브강의
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
- 프로그래머스
- css #생활코딩 #웹
- 백준 #알고리즘 #파이썬 #코딩테스트
- 코딩테스트
- react #리액트 #동빈나
- PYTHON
- Dijkstra
- 백준 #파이썬 #알고리즘 #코딩테스트
- 투포인터
- 알고리즘
- java #자바
- css #웹 #생활코딩
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
- 다이나믹프로그래밍
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- 백트랙킹
- 파이썬
Archives
- Today
- Total
커리까지
[백준] 10844번 쉬운 계산 수 파이썬 본문
728x90
SMALL
문제
45656이란 수를 보자.
이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다.
N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다.
입력
첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다.
출력
첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.
예제 입력 1
1
예제 출력 1
9
예제 입력 2
2
예제 출력 2
17
제출 답안
- https://cotak.tistory.com/12
- 위 블로그를 보고 배웠다.
- 처음에 범위를 어떻게 설정해야 하는지 헷갈렸다.
- 자세히 생각해보니 0 ~ 9까지를 기준으로 둬야 문제처럼 숫자열을 만들 수 있다.
'''
1. 아이디어
- dp에 값을 저장한다.
-
3. 변수
- dp []
'''
import sys
input = sys.stdin.readline
n = int(input())
dp = [[0] * 10 for _ in range(n+1)]
for i in range(1, 10):
dp[1][i] = 1
mod = 1000000000
for i in range(2, n+1):
for j in range(10):
if j == 0:
dp[i][j] = dp[i-1][1]
elif j == 9:
dp[i][j] = dp[i-1][8]
else:
dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1]
print(sum(dp[n]) % mod)
728x90
LIST
'알고리즘 > 풀이' 카테고리의 다른 글
[백준] 11053번 가장 긴 증가하는 부분 수열 파이썬 (0) | 2023.02.09 |
---|---|
[백준] 9095번 1,2,3 더하기 파이썬 (0) | 2023.02.08 |
[백준] 4158번 CD 파이썬 (0) | 2023.02.06 |
[백준] 25916번 싫은데요 파이썬 (0) | 2023.02.05 |
[백준] 22857번 가장 긴 짝수 연속한 부분 수열 (small) 파이썬 (0) | 2023.02.04 |
Comments