web/javascript prac with BOJ

[BOJ 1회독] 자바스크립트 입출력 및 사칙연산

xudegloss 2023. 3. 26. 02:11
목차

1. parseInt와 Number 비교하기.
2. node.js로 데이터 입력받기.

1. parseInt vs Number 비교하기

아래의 코드를 살펴보면 parseInt와 Number의 차이점을 알 수 있다.

let a = "제 1회";
console.log(Number(a)); // NaN
console.log(parseInt(a)); // NaN

let b = "2023년";
console.log(Number(b)); // NaN
console.log(parseInt(b)); // 2023

let c = "2023";
console.log(Number(c)); // 2023
console.log(parseInt(c)); // 2023

let d = "123.45678";
console.log(Number(d)); // 123.45678
console.log(parseInt(d)); // 123
console.log(parseFloat(d)); // 123.45678

 

기준 Number parseInt parseFloat
문자열 정수 숫자 앞 뒤에 문자 있는 경우 NaN NaN -
문자열 정수 숫자 뒤에만 문자 있는 경우 NaN 정수 -
문자열 정수 숫자만 있는 경우  정수 정수 -
문자열 숫자가 정수가 아닌 경우 정수 아님 정수 정수 아님

문자열 안에 숫자만 있는지 아닌지에 따라서 NaN이 나오기도 하고, 정수가 나오기도 한다. 

2. node.js로 입력받기

 

[참고 블로그] node.js로 백준풀 때 유의할 점

 

가장 많이 쓰이는 3가지만 가져와봤다. 특히 하나의 값 입력받을 때에 trim을 사용하지 않으면 에러 메세지가 뜬다.

// 1. 하나의 값을 입력받을 때
const input = require('fs').readFileSync('/dev/stdin').toString().trim();

// 2. 공백으로 구분된 한 줄의 값들을 입력받을 때
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split(' ');

// 3. 여러 줄의 값들을 입력받을 때
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');

 

아래의 코드를 조심하자.

// 한 글자 입력받는 경우에 이렇게 하면 무조건 에러가 뜬다.
const input = require('fs').readFileSync('/dev/stdin').toString().split();

 

입력값이 문자열인 경우에는 utf-8 인코딩 적용을 해야하는 경우 또한 존재한다.

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "/input.txt";

// 문자열 정보인 경우에는 인코딩 처리하기.
let input = fs
  .readFileSync(__dirname + filePath, "utf-8")
  .toString()
  .trim();