본문 바로가기
🔑 알고리즘/백준 JS

[백준] node.js/ 1748_ 수 이어쓰기(1)

by Tamii 2021. 10. 22.
반응형

 

 

내풀이

const fs = require('fs');

let input = (fs.readFileSync('./dev/stdin') + '').toString().trim();
const lenInput = input.length;
let cnt = 0;

// 1     2      3
// 10-1 100-10 + 120-(100-1)
for (let i = 1; i <= lenInput; i++) {
  if (i === lenInput) {
    let curCnt = (parseInt(input) - (10 ** (i - 1) - 1)) * i;

    cnt += curCnt;
  } else {
    let curCnt = (10 ** i - 10 ** (i - 1)) * i;
    cnt += curCnt;
  }
}

console.log(cnt);

자릿수별로 생각해보다가 공식으로 해결이 되는 문제 같아서 공식을 이용해 풀이

 

 

다른 풀이

 

let cnt = 0;
for (let i = 1; i <= N; i *= 10) {
    cnt += N - i + 1;
}

console.log(cnt);

하.. 한줄에 끝나는구나...

애초에 for문을 돌 때 i+1 이아니라 i*10을 해주면 되는것이었다...

 

 

  🥳 혼자 잘 풀어서 기뻤지만 살짝 허망한 것.... 그래도 좋다!

댓글