반응형
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 |
Tags
- 소켓
- Crawling
- 그래프
- TCP
- dp
- 타입 챌린지
- HTTP 완벽 가이드
- typescript
- 쉬운 문제
- 자바스크립트
- Algorithm
- type challenge
- ip
- 프로그래머스
- BFS
- socket
- 문자열
- 타입스크립트
- 알고리즘
- 수학
- 가천대
- 프로그래머스 레벨 2
- javascript
- 백준
- HTTP
- Node.js
- 레벨 1
- dfs
- Nestjs
- 크롤링
Archives
- Today
- Total
kakasoo
[node.js] 수 이어 쓰기 1 ( 백준 1748번 ) 본문
반응형
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
const numPad = new Array(line.length).fill(0).map((el, i) => i + 1);
const acc = numPad.map((el, i) => {
if (10 ** (i + 1) < Number(line)) {
return el * 10 ** i * 9;
} else {
return el * (Number(line) + 1 - 10 ** i);
}
});
const sum = acc.reduce((a, b) => a + b);
console.log(sum);
});
// 1~9 9
// 10 ~ 99 2 * 90
// 100 ~ 999 3 * 900
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
let sum = 0;
for (let i = 1; i <= Number(line); i *= 10) {
sum += Number(line) - i + 1;
}
console.log(sum);
});
// 1~9 9
// 10 ~ 99 2 * 90
// 100 ~ 999 3 * 900
첫번째 풀이로는 test case를 통과했지만 채점 결과 틀렸다고 나왔다. 무엇이 잘못되었는지 모르는 상태이다.
여기서 여기까지는 1... 여기서 여기까지는 2... 더하면 얼마, 이런 식으로 생각하는 것은 너무 어려웠다.
그래서 생각한 게 2번 풀이이다.
932라는 숫자를 입력했다고 해보자.
1 ~ 932까지 전부 1을 더해야 할 것이다.
10 ~ 932까지 전부 1을 더 더해줘야 할 것이다.
100 ~ 932까지 전부 1을 더 더해줘야 할 것이다.
이렇게 생각하는 것이 더 피로도가 적다. 생각 방식만 바꿔도 훨씬 빠르게 풀 수 있는 것을, 3번이나 틀렸다.
이런 풀이를 알아낸 시점에서 1번 풀이에 고집할 필요가 없다.
애초부터 틀린 코드니깐 미련을 가지지 말자.
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
[node.js] 차이를 최대로 ( 백준 10819번 ) (0) | 2021.07.30 |
---|---|
[node.js] 모든 순열 ( 백준 10974번 ) (0) | 2021.07.30 |
[node.js] 리모컨 ( 백준 1107번 ) (0) | 2021.07.29 |
[node.js] n진수 게임 ( 프로그래머스 레벨2 ) (0) | 2021.07.07 |
[node.js] 캐시 ( 프로그래머스 레벨2 ) (4) | 2021.07.05 |