백준 1000번 Node.js 풀이

버건디·2022년 6월 27일
0

백준

목록 보기
4/75
post-thumbnail

문제

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

입력

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

출력

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

예제 입력 1

1 2

예제 출력 1

3

풀이

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

console.log(Number(input[0]) + Number(input[1]));

해설

입력값을 어떻게 받아야 하는것인지 잘 몰라서 결국 구글링의 도움을 받았다..
노드에서는 입력값을 받는 방법이

  1. readline 모듈 사용
  2. fs모듈 사용

크게 이렇게 나뉘어지는데, readline모듈보다 fs모듈이 가독성이 더 좋다는 생각이 들어서 fs모듈 작성방법을 공부해보았다.

-fs모듈이란?

fs모듈이란 FileSystem 의 약자로 파일처리와 관련된 모듈이다.
보통

  1. fs.readFile(filename,[options],callback)
  2. fs.readFileSync(filename,[options])

이 두가지로 나뉘어지는데

1번의 방식은 filename의 파일을 [options]의 방식으로 읽은 후, callback으로 전달된 함수를 호출하는 비동기적 방식이고,
2번의 방식은 filename의 파일을 [options]의 방식으로 읽은 후, 문자열을 반환하는 동기적 방식이다.

1번의 방식은 콜백함수가 또 따로 있어야하고, 비동기적 방식을 적용하는거라 문제풀이에 적당하지 않다. 그러므로 알고리즘 문제를 풀때는 2번 방식을 이용해야한다

노드에서는 입력값을 받아야하는 경우에 따라서 인풋값 작성방식이 다르다. 인풋값 입력 방법 참조 <- 이곳에 다양한 방법들이 정리 되어 있다

여기에서는 1000번 문제에서 사용하는 인풋 입력값만을 풀이 해보겠다.

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

이렇게 입력을 받았는데, require('fs')는 fs모듈을 불러온다는 뜻이고
readFileSync('/dev/stdin')는 표준입력값을 받아서 파일을 처리하겠다는 뜻이다.

하지만 이렇게 입력값을 받으면 버퍼객체를 반환하기 때문에 예기치 못한 오류가 일어날 수 있다.

그렇기 때문에 꼭 toString()을 통하여 문자열로 반환을 해주어야 한다.

또한 입력값을 2개를 받을 것이기 때문에 split메서드를 통하여 문자 배열로 반환하도록 하였다.

마지막에 콘솔창에서 Number메서드를 사용하지 않는다면 문자열들끼리의 결합이기 때문에 오류가 발생할 수 있다.

그렇기 때문에 Number 메서드를 꼭! 사용해주어야 한다!

profile
https://brgndy.me/ 로 옮기는 중입니다 :)

0개의 댓글