반응형
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
- 소켓
- 자바스크립트
- 백준
- ip
- 타입스크립트
- 쉬운 문제
- type challenge
- socket
- TCP
- 수학
- 그래프
- 문자열
- javascript
- 가천대
- Node.js
- 레벨 1
- Nestjs
- typescript
- 타입 챌린지
- dfs
- BFS
- 알고리즘
- 프로그래머스
- HTTP 완벽 가이드
- Crawling
- Algorithm
- 크롤링
- HTTP
- dp
- 프로그래머스 레벨 2
Archives
- Today
- Total
kakasoo
[node.js] 신나는 함수 실행 ( 백준 9184번 ) 본문
반응형
결코 신나지 않았다. 이게 Cpp였다면 솔직히 10분 안에 풀 자신도 있었다.
오류가 발생했다면 아마 다음과 같을 것이다.
배열에 string과 number를 혼용해서 쓰고 있지 않은가?
배열의 사이즈를 적절하게 하지 않아서 메모리가 초과되지 않았는가?
그냥 통째로 문자열로 다루려고 하지 않았는가?
예컨대, "111"를 키 값으로 저장한다던가... 이렇게 하면 문제가 발생한다.
다른 수, 예컨대 "1111"는 "1"과 "1"과 "11"의 조합인지, 아니면 11이 처음이나 중간에 나오는지 어떻게 구별하는가?
메모리가 꼬인다.
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
main(line);
}).on("close", () => {
process.exit();
});
const memo = {};
const recursive = (a, b, c) => {
if (a <= 0 || b <= 0 || c <= 0) {
return 1;
}
if (a > 20 || b > 20 || c > 20) {
return recursive(20, 20, 20);
}
if (memo[a][b][c]) {
return memo[a][b][c];
}
if (a < b && b < c) {
memo[a][b][c] =
recursive(a, b, c - 1) +
recursive(a, b - 1, c - 1) -
recursive(a, b - 1, c);
} else {
memo[a][b][c] =
recursive(a - 1, b, c) +
recursive(a - 1, b - 1, c) +
recursive(a - 1, b, c - 1) -
recursive(a - 1, b - 1, c - 1);
}
return memo[a][b][c];
};
const main = (line) => {
if (line === "-1 -1 -1") {
rl.close();
}
const numbers = line.split(" ").map(Number);
const [a, b, c] = numbers;
for (let i = 0; i <= 20; i++) {
memo[i] = [];
for (let j = 0; j <= 20; j++) {
memo[i][j] = [];
for (let k = 0; k <= 20; k++) {
memo[i][j][k] = null;
}
}
}
console.log(`w(${a}, ${b}, ${c}) = ${recursive(a, b, c)}`);
};
조건문의 순서에도 주의를 기울이자.
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
[node.js] 포도주 시식 ( 백준 2165번 ) (0) | 2021.03.29 |
---|---|
[node.js] 평범한 배낭 ( 백준 12865번 ) (0) | 2021.03.26 |
[node.js] A -> B ( 백준 16953번 ) (0) | 2021.03.26 |
[node.js] 팰린드롬수 ( 백준 1259번 ) (0) | 2021.03.26 |
[node.js] 검증수 ( 백준 2475번 ) (0) | 2021.03.26 |