TIL. 48 코딩 테스트 Javascript 입력 받기(node.js)

Minjae Choi·2021년 10월 27일
2

Coding Test

목록 보기
4/4

구름Level, 프로그래머스, 백준 등 여러가지 코딩 테스트 사이트를 살펴 보았다. 수동으로 입력을 받아 진행해야 하는 사이트도 있고, 해당 함수안에 로직만 구현하면 되는 편리한 사이트도 있었다.

구름(Goorm)이라는 사이트에서 처음 수동 입력을 접하고 어려웠던 기억이 있어... 입력받는 방법들을 정리해보려 한다.


개요

  • 일부 코딩 테스트는 Javascript로 코딩 테스트를 진행하려면 node.js를 활용해 입력값을 수동으로 받아와야 한다는 이슈가 있다.

  • 코딩 테스트 자바스크립트의 입출력 개념 및 전반적인 내용은 추 후 추가 작성 하도록 하고, 현재는 구름의 수동 입력 자체에 대해 학습한 내용을 정리한다.


입력의 종류

  • 보통 입력은 한줄 입력, 여러 줄 입력으로 나뉜다.

  • 원활하게 구현 자체에 집중하기 위해서는 명시되어 있는 입출력 규칙(공백, 줄바꿈, 탭)에 대해 민감하게 살펴보아야 한다.

입력 예시(한줄case, 여러줄case)

출력 예시(case는 입력과 동일)

  • 입출력 값과 완전하게 동일한 모양으로 맞춰주어야 테스트 통과가 가능하다.

  • 더 나아가서 해당 출력값의 경우, 맨 뒤 공백까지도 같아야 한다.


입력 받기

🎈 한줄 입력

  • 테스트를 시작하면 자체적으로 아래 코드를 제공하며, line 인자로 입력을 받을 수 있다.
// 기본적으로 주어지는 코드

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

rl.on("line", function(line) {
  console.log(line); // 입력 값을 확인할 수 있다.
  rl.close();
}).on("close", function() {
  process.exit(); // 프로세스 종료
});
  • 한줄 입력의 경우, 따로 설정해줄 필요 없이 바로 사용 가능하다.

  • 입력값이 한줄에 하나가 아니라 여러개일 경우에는 split 등을 활용해 입력값을 가공해서 사용해야 한다.


🎈 여러줄 입력

  • 한줄case와 마찬가지로 코드가 주어진다.
  const readline = require("readline");
  const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
  });

  rl.on("line", function(line) {
    console.log(line);
    rl.close();
  }).on("close", function() {
    process.exit(); // 프로세스 종료
  });
  • 한줄 입력과는 다르게 console.log(line)으로 전체 입력값 확인이 안된다. 가공이 필수적이다.

  • 최상위에 변수를 선언하고, 그 변수를 활용해 line 값을 넣어줘야 한다.

  • 주의점은, rl.close()를 실행하면 프로세스가 종료된다. 하나의 방법은 이 코드를 삭제해 원하는 만큼 입력을 받아올 수 있다.

  // 여러줄 입력값 받아오는 예시

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

  const input = [];

  rl.on("line", function(line) {
    input.push(line) // 변수에 값을 할당한다.
  }).on("close", function() {
    console.log(input) // 입력값 확인 가능
    process.exit(); // 프로세스 종료
  });

0개의 댓글