반응형
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
- 프로그래머스 레벨 2
- dfs
- 가천대
- ip
- Nestjs
- 타입 챌린지
- 타입스크립트
- typescript
- 백준
- HTTP
- TCP
- 레벨 1
- 쉬운 문제
- 알고리즘
- type challenge
- Node.js
- 그래프
- 프로그래머스
- 수학
- Algorithm
- 자바스크립트
- javascript
- dp
- Crawling
- 소켓
- 문자열
- socket
- 크롤링
- HTTP 완벽 가이드
- BFS
Archives
- Today
- Total
kakasoo
[node.js] 퇴사 ( 백준 14501번 ) 본문
반응형
꽤 어려웠다.
// 백준 14501번 퇴사 문제를 풀었습니다.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let count = 0;
const input = [];
rl.on("line", (line) => {
if (count === 0) {
count = Number(line);
} else {
input.push(line);
if (input.length === count) {
main();
rl.close();
}
}
}).on("close", () => {
process.exit();
});
const main = () => {
const T = [0];
const P = [0];
input.forEach((el) => {
numbers = el.split(" ").map(Number);
const day = numbers[0];
const price = numbers[1];
T.push(day);
P.push(price);
});
const DP = new Array(T.length).fill(0);
for (let i = 1; i < DP.length; i++) {
DP[i] = P[i];
if (i + T[i] - 1 > count) {
DP[i] = DP[i - 1];
continue;
}
let temp = DP[i];
for (let j = 1; j < i; j++) {
if (j + T[j] <= i) {
temp = Math.max(temp, DP[j] + P[i]);
}
}
DP[i] = temp;
}
console.log(Math.max(...DP.slice(1, count + 1)));
};
점화식은 간단한데 생각할 부분들이 조금 있었다. for 문 안의 if문이 그러하다. 구현이 약간 섞여 있어서, 좀 더 어려웠던 거 같다.
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
[node.js] 최대공약수와 최소공배수 ( 백준 2609번 ) (0) | 2021.04.05 |
---|---|
[node.js] 나누기 ( 백준 10430번 ) (0) | 2021.04.05 |
[node.js] 합분해 ( 백준 2225번 ) (0) | 2021.04.03 |
[node.js] 제곱수의 합 ( 백준 1699번 ) (0) | 2021.04.03 |
[node.js] 패션왕 신해빈 ( 백준 9375번 ) (0) | 2021.04.02 |