어제 혼자 문제를 풀면서 답안을 적기 전, fs모듈을 사용해서 파일을 읽어오는 과정을 이해하는데 있어서 어려움을 겪었다. 그래서 문제의 정답을 맞췄다고 하더라도 굉장한 찝찝함이 남았고 성취감 또한 느끼지 못했다.
친구에게 도움을 청했을 때 원래 처음엔 그런 법이라고 다들 그렇다고 말해주긴 했지만 가려운 부분을 시원하게 긁지 못한 답답함에 검색을 따라 입력 방식에 대한 부분만 따로 일지를 작성하기로 했다.
const fs = require("fs");
fs모듈을 사용해서 파일을 읽겠다.
const input = fs.readFileSync('/dev/stdin').toString().split(' ');
입력 받은 문자열을 split() 함수를 통해 배열화한다.
(split(' '), split('\n')_줄바꿈 등)
toString()이란 숫자를 문자로 바꿔주는 것
const a = Number(input[0]); const b = Number(input[1]);
a는 input의 0번째 숫자 b는 input의 1번째 숫자
(문자인 값을 숫자로 바꿔주는 것 Number)
Number(input[0]) = +input[0] (데이터타입이 숫자가 아니면 암시적으로 숫자가 바꿔줘서 Number와 똑같은 효과를 줄 수 있다.)
.map(val=>+val)
문자에서 숫자로 바꿔주는 코드로 split 뒤에 붙여주면 된다.
const fs = require("fs"); const input = fs.readFileSync('/dev/stdin').toString().split(' ').map(val=>+val);
전체적으로 이런식의 기본코드가 형성된다.
(이 유튜브를 통해서 알게 된 내용을 참고하여 기재하였음)
https://blog.pkiop.me/boj-js/문제번호/ 로 검색하면 fs모듈 코드를 참고하여 문제를 풀 수 있음
한줄 입력을 받을 때
let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split(' '); let num = Number(input); for (let i = 1; i <= num; i++) { console.log(i); }
여러줄로 입력을 받을 때
let fs = require('fs'); let input = fs.readFileSync('/dev/stdin').toString().split('\n'); let count = input[0]; let numbers = []; for (let i = 1; i < input.length; i++) { if (input[i] !== '') { numbers.push(input[i].split(' ')); } } for (let i = 0; i < numbers.length; i++){ let num1 = Number(numbers[i][0]); let num2 = Number(numbers[i][1]); console.log(num1 + num2); }