[JS] 백준14681 - 사분면 고르기

n-u·2022년 6월 13일
0

Algorithm

목록 보기
2/33
post-thumbnail

백준 14681. 사분면 고르기

https://www.acmicpc.net/problem/14681

제출한 풀이

const fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split(`\n`).map(i => +i);
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 if(X > 0 && Y < 0 ){
    console.log(4);
}

원래 하던데로 fs모듈을 이용했는데 런타임에러가 나타나 문제를 해결하지 못했었다.

해결

결과를 구하는 식은 변경하지 않고, readline모듈을 이용해 입력을 받아 해결했다.

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

let input = [];

rl.on("line", function (line) {
  input.push(parseInt(line));
}).on("close", function () {
  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 if(X > 0 && Y < 0 ){
    console.log(4);
  }
  process.exit();
});

참고) VScode에서 readline이용해 txt파일 받는 코드

백준을 풀때 비주얼 vscode를 이용해 메모장에 입력값을 넣고 입력값을 받아 문제를 풀어보고 코드를 복사하는 식으로 문제를 풀고 있다.
fs모듈fs.readFileSync()을 이용해 파일 경로를 명시해주면 메모장에 있는 입력값을 가져와 입력값을 받아 올 수 있었는데 readline모듈은 이번에 처음 접해보는 거라 입력값받는 코드를 어떻게 가져와야 하는지 난감했다.

참고한 글 - avaScript에서 줄 단위로 파일 읽기

const fs = require('fs');
const file = './input.txt';

기존에 있는 readline모듈에 위의 코드(파일 경로)를 추가한다.

const rl = readline.createInterface({
    input : fs.createReadStream(file),
    output : process.stdout,
    terminal : false
});

백준풀이할때에는 input: process.stdin부분을 fs.createReadStream(file)부분으로 변경해주면 메모장에 저장된 값을 입력 받을 수 있다.

vscode에서 작성한 백준 1481 문제 코드

const readline = require('readline');
const fs = require('fs');
const file = './input.txt';
const rl = readline.createInterface({
    input : fs.createReadStream(file),
    output : process.stdout,
    terminal : false
});

let input = [];

rl.on('line', function(line){
    input.push(line);
})
.on('close', function(){
   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 if(X > 0 && Y < 0 ){
        console.log(4);
    }
    process.exit();
})
profile
기록하며 발전하는 삶

0개의 댓글