일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- recoil
- 공변성
- 리터럴 타입
- 인터섹션
- CORS
- map
- 투포인터
- async/await
- RTK Query
- Promise
- 타입 좁히기
- 이분 검색
- webpack
- ESlint
- app router
- React
- useAppDispatch
- Jest
- SSR
- Cypress
- CI/CD
- 태그된 유니온
- 결정 알고리즘
- 호이스팅
- dfs
- TS
- 반공변성
- autosize
- 무한 스크롤
- tailwind
Archives
- Today
- Total
짧은코딩
바닥 공사 본문
반응형
다이나믹 프로그래밍은 종종 결과가 너무 클 수 있어서 어떤 수로 나눠서 출력하라고 한다.
풀이법
-N이 3일 때의 예시
1. N이 3이고, i-1번째 즉, 2번 칸까지 채워져 있으면 경우에 수는 1개이다.
2. i-2번째 즉, 1번 칸까지 채워져 있으면 경우의 수는 2가지이다.
-점화식
따라서 점화식은 이렇게 구할 수 있다.
풀이
n = int(input())
d = [0] * 1001
d[1] = 1
d[2] = 3
for i in range(3, n + 1):
d[i] = (d[i-1] + d[i-2] * 2) % 796796
print(d[n])
점화식에 맞게 코딩을 했다. 이 문제의 풀이도 처음엔 생각하지 못했다. 다이나믹 프로그램을 코딩하면 쉽지만 점화식 같은 풀이를 생각하는 것이 어렵다. 앞으로 더 많은 연습을 해야겠다.
반응형
'코딩 테스트(Python) > 이것이 취업을 위한 코딩 테스트다' 카테고리의 다른 글
최단 경로, 다익스트라 (0) | 2022.06.30 |
---|---|
효율적인 화폐 구성 (0) | 2022.06.23 |
개미 전사 (0) | 2022.06.21 |
1로 만들기 (0) | 2022.06.21 |
다이나믹 프로그래밍 (0) | 2022.06.20 |
Comments