
사실 예전부터 백준을 풀라고 했지만 계속 미루게 되어서 못 하고 있었는데, 어느 날 갑자기 친구가 학교에서 알고리즘 자율 동아리를 만들겠다고 너도 하지 않겠냐고 카톡이 와서 같이 하게 되면서 자연스럽게 백준을 풀게 되었다.
일단 백준은 JS를 지원하지 않는다. 그래서 JS를 사용하는 사람들은 백준을 추천하지 않는다. 하지만 node.js를 이용하면 문제를 풀 수 있긴하다. 문제는 메모리관리가 안되고, input값을 직접 넣어줘야하며, 가끔 런타임 에러가 발생할 수 있다. 그럼에도 node.js로 푸는 이유는 그나마 다른 언어에 비해 익숙하면서 자신있는 언어이기 때문이다.
원래는 다음주 주말에 풀어야 되는거지만 아직 node.js로 입출력은 익숙하지 않기 때문에 미리 연습해 보았다.
// 파일을 읽기 위해 FileSystem(fs)모듈 사용
const fs = require('fs');
/*
백준에서 테스트하는 플랫폼이 linux 이기 때문에
만약 백준에서 제출 할 때는 백준 공식 홈페이지에서 제공하는 파일경로를 읽고,
테스트 할 때는 input.tet 파일을 읽게 만듦
*/
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
// 입출력을 받을 때는 문자열로 받게 만들고, 줄바꿈까지 하게 만듦
let input = fs.readFileSync(filePath).toString().split('\n');
input.txt
// 입력할 값 적어주기
5 10
app.js
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().split('\n');
// 예시 문제
// a * b 출력
input = input[0];
console.log(input) // 5 10
// 현제 input값은 배열이 안 나뉘어져 있기 때문에 split을 사용하여 공백을 기준으로 배열을 나눔
input = input.split(' ')
console.log(input) // [ '5', '10' ]
// 현제 input값은 문자열이기 때문에 map을 사용해 숫자로 바꿈
input = input.map(item => Number(item));
console.log(input) // [ 5, 10 ]
function 답(a, b) {
console.log(a * b); // 50
}
답(input[0], input[1]);