자바스크립트로 백준 풀어보기 (0)

Yubin·2022년 5월 7일

자기개발

목록 보기
4/6

갑자기 백준을 푸는 이유

사실 예전부터 백준을 풀라고 했지만 계속 미루게 되어서 못 하고 있었는데, 어느 날 갑자기 친구가 학교에서 알고리즘 자율 동아리를 만들겠다고 너도 하지 않겠냐고 카톡이 와서 같이 하게 되면서 자연스럽게 백준을 풀게 되었다.

왜 굳이 자바스크립트로?

일단 백준은 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]);
profile
꾸준히 기록하는 개발자가 꿈인 고등학생

0개의 댓글