whatisthis?

백준 1000 javascript (node.js) 풀이 본문

ALGORITHM/BOJ (Node.js)

백준 1000 javascript (node.js) 풀이

thisisyjin 2021. 12. 6. 10:09

입출력과 사칙연산 - (5)

 


 

💡문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

📁입력

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

📈출력

첫째 줄에 A+B를 출력한다.


< 코드 >

 

const fs = require("fs");

const input = fs.readFileSync("/dev/stdin").toString().split(' ');

const A = parseInt(input[0]);
const B = parseInt(input[1]);

console.log(A + B);

 


< 풀이 >

 

 

 

이전 문제는 입력이 '없음' 이였으나,

입력 두개가 존재하는 문제이므로 이번에는 

const fs = require("fs");

const input = fs.readFileSync("/dev/stdin").toString().split(' ')

위와 같은 두줄의 코드를 입력해줘야한다.

 

Node.js에서는 입력도 직접 떠먹여줘야 하기 때문에 (...)

자바스크립트로 쓰려면 위와 같은 두줄을 입력해준다.

 

 

 

우선, 첫번째 줄을 보면 'fs'가 무엇일까?

fs모듈

fs모듈은 파일 시스템에 접근하는 모듈이다.
즉, 파일을 생성하거나 삭제하고 읽거나 쓸 수 있다.

fs모듈 예제.

const fs = require('fs');
 
fs.readFile('./example.txt',(err, data)=>{
    if(err){
        throw err;
    }

 

1. const fs = require('fs')로 모듈을 불러온다.

 

모듈(module)이란?

 

모듈이란 여러 기능들에 관한 코드가 모여있는 하나의 파일임.

 

다른 모듈을 사용할 때는 require 를, 모듈을 해당 스코프 밖으로 보낼 때에는 module.exports 를 사용함.

 

(REF : https://baeharam.netlify.app/posts/javascript/module)

 

 

a.js

const printHelloWorld = () => {
  console.log('Hello Wolrd');
};

module.exports = {
  printHelloWorld
};

 

b.js

const func = require('./a.js');
func.printHelloWorld();

 

 

 

___

 

 

const input = fs.readFileSync("/dev/stdin").toString().split(' ')

위 줄을 해석해보면

 

fs모듈에서 readFileSync 함수로 /dev/stdin (= standard input)을 참조해서 불러오는 것이다.

불러온 입력값을 toString()으로 type을 string으로 변환해주고, split(' ')으로 띄어쓰기로 구분해서 

input이라는 배열에 저장하는 것이다.

 

 

 

참고 :  모듈 안에 있는 함수도 메서드라 하는가?

fs 모듈의 경우에는 require로 불러와서 변수로 불러오고
안에 함수를 사용할때도
fs.readFile() 과 같이 object-method와 같이 쓰므로 메소드라 할 수 있다!


💡  참고 -  함수 선언 방법 비교
function 함수명() {
    // 코드
}
// 함수 호출은 선언 전,후 모두 가능​
const 함수명 = function() {
    // 코드
}
// 함수 호출은 선언 후에 해야함

 

 

 

💡     split() 함수

 

 

문자열을 일정한 구분자로 잘라서 배열로 저장함.

 

Syntax

string.split(separator, limit)

 

문자열을 'separator'로 잘라서,
'limit' 크기 이하의 배열에 잘라진 문자열을 저장하여 리턴함.

 



 

 

💡    readFile   vs   readFileSync

 

readFile

비동기식 처리.

데이터를 가져올 때 프로그램 진행을 멈추지 않고 그 다음으로 진행함.

readFileSync

동기식 처리.

데이터를 가져올 때 프로그램 진행을 멈추고, 꼭 순서대로 실행함.

 

 

 

 


 

const A = parseInt(input[0]);
const B = parseInt(input[1]);

console.log(A + B);

 

A와 B를 input 배열의 아이템 0번 / 1번으로 각각 저장한다.

대신, 반드시 연산을 'number'의 형태로 해야하므로 parseInt를 해준다.

 

문제에서 두 정수 A와 B라고 나와있으므로 parseInt.

>> 만약 소수점 포함한 수라면? parseFloat 해주자.