프론트엔드/Javascript

백준 node.js / javascript boiler plate code(기본코드)

프흐프좋아 2023. 8. 14. 11:45

백준에서 node.js 나 js로 알고리즘을 풀려고하면

자바처럼 값을 입력받는 scanner 같은게 없어서 파일로 받아야하는데

테스트도 안되고 짱날때가 있어서 기본코드를 만들어 놨다

 

// readline 모듈보다는 fs를 이용해 파일 전체를 읽어 들여 처리하기
const fs = require('fs')

const input = fs
  .readFileSync(process.platform === "linux" ? "/dev/stdin" : "test.txt")
  .toString()
  .trim()
  .split("\n");

function solution(data) {
    let [N,K] = input[0].split(" ").map(Number);

    let coin = new Array(); // 동전꾸러미

    for(let i = 1 ; i <= N ; i++)
    {
        coin.push(Number(input[i]));
    }

    coin.sort(function(a,b){
        return b - a;
    });

    let cnt = 0;

    for(let p of coin){
        cnt += Math.floor(K/p);
        K = K%p;
    }

    console.log(cnt);
}

solution(input);

상단의 코드를 위에 두고 아래에서 함수 짜서 만들면 행복한 코딩 가능 !

예제

const fs = require('fs')

const getInput = (filePath) => {
    return fs
        .readFileSync(filePath)
        .toString()
        .split(/\n/);
    }

const input = getInput('/dev/stdin'); // 제출시 여기 '/dev/stdin' 으로 변경

function calculateTotalSum(K, numbers) {
  const stack = [];

  for (let i = 0; i < K; i++) {
    const num = numbers[i];
    if (num == 0) {
      stack.pop(); // 가장 최근에 쓴 수를 지움
    } else {
      stack.push(num); // 해당 수를 씀
    }
  }

  let sum = 0;
  while (stack.length > 0) {
    sum += Number(stack.pop()); // 스택에 남아있는 수들의 합을 계산
  }

  return sum;
}

var aa = Array();
for(var i = 1 ; i <= input.length - 1 ; i++)
{
    aa.push(input[i]);
}
console.log(calculateTotalSum(input[0],aa));