백준 1789번 Node.js 풀이

버건디·2024년 1월 15일
0

백준

목록 보기
64/75
post-thumbnail

문제 링크


- 내 풀이

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim();

let N = Number(input);

let count = 1;

let answer = [];

while (N > 0) {
  if (N - count < 0) {
    const poppedNum = answer.pop();
    const totalNumber = N + poppedNum;
    answer.push(totalNumber);

    break;
  }

  N -= count;

  answer.push(count);

  count++;
}

console.log(answer.length);

- 다른 풀이

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().trim();

let N = Number(input);

let sum = 0;

let current = 0;

while (sum <= N) {
  current += 1;
  sum += current;
}

console.log(current - 1);

이게 왜 성립하는지는 모르겠다.

만약 current가 19까지 더해진 상태이고, sum이 190인상태에서 current가 늘어나서 20을 또 더해주면 210인데,

210은 N과 똑같은 숫자는 아닌데 그냥 current-1을 해주어서 해결하는 방법이 와닿지는 않는다.

profile
https://brgndy.me/ 로 옮기는 중입니다 :)

0개의 댓글