일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- C++
- 동적 계획법
- 함수 객체의 프로퍼티
- __proto__ 접근자 프로퍼티
- python
- 프로그래밍
- css
- prototype 프로퍼티
- 알고리즘
- 백트래킹
- 백준
- javascript
- 최소공배수
- 비동기
- backtracking
- 한글 입력 시 이벤트 두 번 발생
- float: right
- 자바스크립트
- 백준 9610번 파이썬 문제 풀이
- 동기
- 유클리드 호제법
- 파이썬
- 2522
- 시간
- Tanstack Query
- 9610
- dp
- 메타버스
- 한글이 두 번 입력됨
- 낙관적 업데이트
Archives
- Today
- Total
염딩코
[JavaScript] 백준 11727번 문제 풀이 본문
DP 점령 2일차.
지난 포스팅에 간단하게 DP에 대한 특징을 정리했습니다.
그것을 기억하면서 이 문제를 풀어봅시다.
2023.09.13 - [알고리즘 PS/Javascript] - [JavaScript] 백준 1463번 문제
[JavaScript] 백준 1463번 문제
이 문제는 DP(Dynamic Programming)를 연습하기 좋은 문제입니다. DP(동적 계획법)에 대한 자세한 설명은 추후에 글을 올리겠습니다. DP에 대해서 간단하게 말씀드리면 DP는 하나의 큰 문제를 여러 개의
yeomyeom.tistory.com
처음에 주어진 것은
1인 경우에는 1가지이고,
2인 경우에는 3가지가 나오는 구나.
DP의 가장 큰 특징 중 하나는 작은 단위로부터 문제를 해결하려는 것입니다.
그래서 작은 단위에서부터 규칙을 찾을 수 있으면 문제는 쉽게 풀 수 있습니다.
2일 때, 3가지이고,
3일 때, 5가지가 나옵니다.
4일 때, 11가지가 나옵니다.
조금 더 밝은 파란색에 집중을 하신다면 규칙을 찾을 수 있습니다.
3일 때부터 자세히 보면, 밝은 파란색으로 색이 칠해진 것을 빼고 봅시다.
처음에 3개는 2일 때 경우의 수입니다. 나머지 2개는 1일 때 경우의 수입니다.
그리고, 4일 때를 자세히 봅시다. 첫 번째 줄에서 밝은 파란색을 빼고 본다면 3일 때의 경우의 수입니다.
두 번째 줄에서 밝은 파란색을 빼고 본다면 나머지 6개는 2일 때 경우의 수입니다.
즉, 위의 그림과 같은 결론을 얻을 수 있습니다.
const stdin = require('fs').readFileSync(0, 'utf8').trim().split('\n');
const N = +stdin[0];
const dp = Array(1001).fill(0);
dp[1] = 1;
dp[2] = 3;
for (let i = 3; i <= N; i++) {
dp[i] = (dp[i - 1] + dp[i - 2] * 2) % 10007;
}
console.log(dp[N]);
'알고리즘 PS > Javascript' 카테고리의 다른 글
[JavaScript] 백준 1520번 문제 풀이 (0) | 2023.09.22 |
---|---|
[JavaScript] 프로그래머스 Lv.0 영어가 싫어요 (0) | 2023.09.15 |
[JavaScript] 백준 1463번 문제 (0) | 2023.09.13 |
[Javascript] 프로그래머스 Lv.2 구명 보트 (0) | 2023.07.31 |
[Javascript] 프로그래머스 Lv.2 카펫 (0) | 2023.07.29 |