[백준] 10844번 : 쉬운 계단 수
2021. 4. 22. 12:11ㆍ백준

접근법
- 배열의 사이즈를 10 X 101(i = 0인 배열은 편의 상 안 쓰기 위해 101로 만듦)로 만들었다.
- 예제 입력 1번을 위해 l[1][0]을 제외한 l의 1행에 1 값을 넣어주었다.(l[1][0]은 0으로 시작하는 수는 없기 때문에 0으로 설정)
- l[2]부터는 이전 배열의 값들을 참고하여 넣는다.
- l[i][0]의 경우 l[i][1]의 경우 밖에 생길 수 없으므로 l[i][j] = l[i - 1][j + 1]을 적용한다.
- l[i][9]의 경우 l[i][8]의 경우 밖에 생길 수 없으므로 l[i][j] = l[i - 1][j - 1]을 적용한다.
- 그 외의 경우에는 자신보다 작은 값에서 1개, 큰 값에서 1개기 때문에 l[i][j] = l[i - 1][j - 1] + l[i - 1][j + 1]을 적용한다.
ex) l[7][7]은 l[6]에서 끝자리가 6이나 8이었던 l[6][8]과 l[6][6]을 더한 값이 된다.
- N행의 모든 값을 sum을 이용하여 합계를 계산하고 1,000,000,000으로 나눈 나머지를 출력한다.
풀이
# 백준 10844번, 쉬운 계단 수
N = int(input())
l = [[0 for _ in range(10)] for _ in range(101)]
for i in range(len(l[1])) :
if i == 0 :
l[1][i] = 0
else :
l[1][i] = 1
for i in range(2, N + 1) :
for j in range(10) :
if j == 0 :
l[i][j] = (l[i - 1][j + 1])
elif j == 9 :
l[i][j] = (l[i - 1][j - 1])
else :
l[i][j] = (l[i - 1][j + 1] + l[i - 1][j - 1])
print(sum(l[N]) % 1000000000)
결과

'백준' 카테고리의 다른 글
| [백준] 14502번 : 연구소 (0) | 2021.04.23 |
|---|---|
| [백준] 7576번 : 토마토 (0) | 2021.04.23 |
| [백준] 1932번 : 정수 삼각형 (0) | 2021.04.21 |
| [백준] 9461번 : 파도반 수열 (0) | 2021.04.21 |
| [백준] 2579번 : 계단 오르기 (0) | 2021.04.20 |