[노드JS/알고리즘] 백준 - 14681번: fs 모듈 런타임 에러
728x90

백준에는 자바스크립트가 없어서 항상 피하다가 이번에 도전해봤다...

우선 입력값 받는 것부터 익숙하지 않기때문에 연습이 필요하다.

 

[문제]

 

 

흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다. 예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다.

점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다.

 

[코드 - 런타임 에러]

const fs = require("fs");
const input = fs
  .readFileSync("input.txt")
  .toString()
  .trim()
  .split("\n")
  .map((v) => +v);

if (input[0] > 0 && input[1] > 0) console.log(1);
else if (input[0] < 0 && input[1] > 0) console.log(2);
else if (input[0] < 0 && input[1] < 0) console.log(3);
else console.log(4);

단순히 입력받은걸 문자열로 변환시킨 후에 다시 숫자로 변환시킨다. (toString이 꼭 필요하다..)

그리고 조건에 맞게 1~4사분면 중에 답을 출력해준다.

 

vscode로 실행했을 때 잘 나오지만, 제출하면 런타임 에러가 발생한다.

구글링해보니 fs 모듈의 문제인가보다..

 

 

[수정 코드]

const readline = require("readline");
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

let input = [];

rl.on("line", (line) => {
  input.push(parseInt(line));
}).on("close", () => {
  const x = input[0];
  const y = input[1];

  if (x > 0 && y > 0) console.log(1);
  else if (x < 0 && y > 0) console.log(2);
  else if (x < 0 && y < 0) console.log(3);
  else console.log(4);

  process.exit();
});

 

readline으로 모듈을 바꾸니 잘된다.

 

 

[참고]

 

백준 14681번 JavaScript 문제

백준 14681번 JavaScript 문제 https://www.acmicpc.net/problem/14681 본인이 제출한 답 개인적으로 주의했던 점들 IF문 문제를 순서대로 풀어보고 있는데 여기 문제부터 fs모듈에 런타임 에러가 나서 통하지 않

velog.io

 

 

[백준] Node.js 알고리즘 풀때 주의 사항

21-06-04 업데이트 이 글은 제가 문제를 풀다가 추가적인 주의점을 발견활 경우 지속적으로 추가될 예정입니다. 저는 그나마 자신있는 언어가 JavaScript여서 알고리즘 사이트에서는 주로 Node.js, JavaS

hanch-dev.tistory.com

 

320x100