두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)
첫째 줄에 A+B를 출력한다.
1 2
3
const input = require('fs').readFileSync('/dev/stdin').toString().split(' ');
console.log(Number(input[0]) + Number(input[1]));
입력값을 어떻게 받아야 하는것인지 잘 몰라서 결국 구글링의 도움을 받았다..
노드에서는 입력값을 받는 방법이
크게 이렇게 나뉘어지는데, readline모듈보다 fs모듈이 가독성이 더 좋다는 생각이 들어서 fs모듈 작성방법을 공부해보았다.
fs모듈이란 FileSystem 의 약자로 파일처리와 관련된 모듈이다.
보통
이 두가지로 나뉘어지는데
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 메서드를 꼭! 사용해주어야 한다!