반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- dfs
- 타입스크립트
- 백준
- Algorithm
- 타입 챌린지
- dp
- javascript
- 그래프
- 소켓
- 프로그래머스 레벨 2
- 가천대
- 프로그래머스
- Node.js
- typescript
- 레벨 1
- Nestjs
- 문자열
- HTTP 완벽 가이드
- socket
- HTTP
- Crawling
- 수학
- TCP
- 알고리즘
- 자바스크립트
- ip
- 쉬운 문제
- 크롤링
- BFS
- type challenge
Archives
- Today
- Total
kakasoo
[node.js] 가장 큰 증가 부분 수열 ( 백준 11055번 ) 본문
반응형
이전 부분 수열 문제들처럼 풀되 조건만 바꿔주면 된다. 그런데 나는 틀렸었는데, 그 이유는 DP[i]의 값을 1로 초기화했기 때문이다.
이전 문제들은 개수를 세는 것이기 때문에 전부 1로 시작했겠지만, 이건 합산하는 것이기 때문에 각 DP[i]는 자기 차례의 숫자가 초깃값으로 저장되어야 한다.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.output,
});
let count = 0;
rl.on("line", (line) => {
if (!count) {
count = Number(line);
} else {
main(line);
rl.close();
}
}).on("close", () => {
process.exit();
});
/**
*
* @param {string} line
*/
const main = (line) => {
const numbers = line.split(" ").map(Number);
const DP = [];
for (let i = 0; i < numbers.length; i++) {
DP[i] = numbers[i];
for (let j = 0; j < i; j++) {
if (numbers[j] < numbers[i] && DP[i] < DP[j] + numbers[i]) {
DP[i] = DP[j] + numbers[i];
}
}
}
console.log(Math.max(...DP));
};
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
[node.js] 타일 채우기 ( 백준 2133번 ) (0) | 2021.03.31 |
---|---|
[node.js] 연속합 ( 백준 1912번 ) (0) | 2021.03.30 |
[node.js] 가장 긴 감소하는 부분 수열 ( 백준 11722번 ) (0) | 2021.03.30 |
[node.js] 가장 긴 증가하는 부분 수열 ( 백준 11053번 ) (0) | 2021.03.30 |
[node.js] 균형잡힌 세상 ( 백준 4949번 ) (0) | 2021.03.30 |