Coding test/baekjoon

백준 코딩테스트 공부 기록 - 1: 입출력과 사칙연산

hello${name} 2022. 4. 16. 14:18

2022.04.16

* 모든 테스트는 node.js(javascript)로 작성합니다!

 

 

1단계: 입출력과 사칙연산

 

- 템플릿 리터럴: 백틱 `` 문자열로 묶어주면, 안의 string이 그대로 출력된다.

  플레이스 홀더(${})를 넣어 표현식을 추가할 수도 있는데,

  만약 a=2인 경우

  console.log(`${a}`); 를 할 시 2가 출력된다

  * 단, 템플릿 리터럴 내 `, \, $를 출력하려면 반드시 앞에 백슬래시(\)를 붙여줘야 한다!

 

 

- node.js에서 입력받기

  다음은 백준 사이트에 예시로 나와있는 코드이다

var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().split(' ');
var a = parseInt(input[0]);
var b = parseInt(input[1]);
console.log(a+b);

  하나씩 살펴보자!

 

  • node.js에서 require란 무엇인가?

         -  다른 파일에 존재하는 module을 가져오는 역할

         -  input으로 받는 javascript file을 읽고 실행시킨 다음, exports object를 리턴함

 

         위 파일의 제목이 example.js라고 하자.

         var example = require('./example.js') 라고 하면, example은 다음의 object가 된다

      즉 example의 파일을 읽고 실행시킨다음, 

          export된 부분을 object 형식으로 리턴 (위 코드에선  exports.message와 exports.say) 하는 것이다!

      * node.js 공식 문서를 정리한 것으로, 링크는 아래에 있다

 

 

          그래서 우선 첫째줄 (var fs = require('fs');)는 fs module을 코드에 포함시켰다는 뜻이다.

 

  • node.js에서 fs은 무엇인가?

         -  fs는 file system 모듈로, 컴퓨터에 존재하는 파일을 읽거나 지우거나 파일을 새로 생성하는 등의 작업을 할 수 있게 해준다

         -  file system 모듈을 포함시키려면 위 예시처럼 var fs = require('fs'); 를 해주면 된다

         -  fs에는 다양한 method가 존재하는데, 그 중 readFileSync()는 readFile()과 함께 

            컴퓨터에 있는 파일을 읽을 수 있게 해주는 method이다

       

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

. (더 공부 필요..)

             

             이후 toString() 메서드를 통해 input을 string으로 전환하고,

             split(' ')을 통해 string을 스페이스로 구분하여 잘라서 배열에 넣는다

 

             즉 '1 2'를 입력했다면, input은 [1,2]가 된다!

 

 

var a = parseInt(input[0]);
var b = parseInt(input[1]);
console.log(a+b);​​

       여기서부터는 각 요소를 정수로 변환하고 그 합을 출력하는 코드이다

 

https://nodejs.org/en/knowledge/getting-started/what-is-require/

 

What is require? | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

 

 

- 자바스크립트 산술연산

 

  산술연산자는 피연산자가 숫자인 연산자 

   + (더하기), - (빼기), * (곱하기), / (나누기), % (나머지)가 있다

 

  • 피연산자가 숫자가 아닐 때는 연산자가 피연산자를 숫자 타입으로 바꾸어 연산

            * 단, + 연산자는 피연산자 중 하나가 문자열이면 나머지 피연산자를 문자열로 만든다

            예를 들어 var a = '2', var b = 3 이면 a+b는 5가 아니라 23이 출력되므로 주의!

  • 정수끼리 나누어도 결과가 부동소수점이 됨

            자바스크립트에선 7/2의 결과는 3이 아니라 3.5!

            몫을 받고 싶다면 Math.floor(a/b)를 이용하자.

  • 나머지 연산자 %의 피연산자는 부동소수점

            자바스크립트에선 5 % 1.5 를 계산할 수 있다. 결과는 5 - (1.5*3)인 0.5

  • 계산할 수 없는 경우

            계산할 수 없는 경우에는 NaN으로 평가.

            피연산자가 true면 1, false와 null이면 0으로 평가하고, undefined면 NaN으로 평가한다.

 

+ String.prototype.trim()

   문자열 양 옆의 공백(whitespace)을 제거해준다

 

백준 1단계 입출력과 사칙연산 모두 완료!