JS 코딩테스트 콘솔 입출력

HP :) 😃·2022년 3월 15일
0
post-thumbnail

안녕하세요 hp입니다 :)

최근들어 프론트엔드 직군에서는 자바스크립트로 코딩테스트를 보는 회사와 교육기관들이 많이 늘어남에 따라 자바스크립트로 알고리즘 문제를 풀 때 기본적인 입출력 방식을 정리해보겠습니다.

📚 방법

우리가 살펴 볼 것들은 아래와 같습니다.

  • 한 줄 값 입력받기
  • 공백을 기준으로 값 입력받기
  • 여러 줄 입력받기
  • n횟수만큼 반복 입력받기
  • 공백이 포함된 문자 여러 줄 입력받기

이러한 것들은 모두 다 기본적으로 readline 모듈을 이용해 인터페이스 객체를 생성해 콘솔을 통해 입력받습니다.

const readline = require("readline");

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

rl.on("line" , (line)=>{
  // 입력방법들 ... 
  rl.close();
});

rl.on("close",()=>{
  // 입력이 끝난 후 실행할 코드 
  process.exit();
});

작동방식을 설명드리자면 우리가 입력한 값들은 line을 통해 들어와 다양하게 활용할 수 있고 rl.close()를 만나게 된다면 close로 들어가 그 안에 있는 내용을 출력하고 process.exit()을 만나면 종료하게 됩니다.

한 줄 값 입력받기

위에 기본적인 형식을 이용해서 한 줄 값 입력받는 방법을 알아보도록 하겠습니다.

const readline = require("readline");

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

rl.on("line" , (line)=>{
  // 입력방법들 ... 
  console.log(`입력 받은 것은?? ${line}`);
  rl.close();
});

rl.on("close",()=>{
  // 입력이 끝난 후 실행할 코드 
  process.exit();
});

// 입력 
// 안녕하세요.

// 출력 
// 안녕하세요.

공백을 기준으로 값 입력받기

const readline = require("readline");

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

let input = [];

rl.on("line" , (line)=>{
  // 입력방법들 ... 
  input = line.split(' ').map(el => parseInt(el));
  rl.close();
});

rl.on("close",()=>{
  // 입력이 끝난 후 실행할 코드 
  input.forEach(num =>{
  	console.log(num);
  })
  process.exit();
});

// 입력 
// 1 2 3 

// 출력 
// 1
// 2
// 3

여러 줄 입력받기

const readline = require("readline");

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

let input = [];

rl.on("line" , (line)=>{
  // 입력방법들 ... 
	input.push(line);
});

rl.on("close",()=>{
  // 입력이 끝난 후 실행할 코드 
  console.log(input);
  process.exit();
});

// 입력 
// 1
// 2
// 3

// 출력 
// ['1','2','3']

위와 같은 경우에는 rl.close()를 호출해주지 않기 때문에 계속해서 값을 입력받을 수 있다.

따라서 , 아래와 같이 조건을 걸어주는것이 필요하다.

n횟수만큼 반복 입력받기

const readline = require("readline");

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

let input = [];
let cnt = 0;

rl.on("line" , (line)=>{
  // 입력방법들 ... 
	cnt += 1;
  if(cnt === 1){
  	N = line;
  }else{
  	input.push(line);
  }
  
  if(cnt>N){
  	rl.close();
  }
  
  
});

rl.on("close",()=>{
  // 입력이 끝난 후 실행할 코드 
  console.log(input);
  process.exit();
});

// 입력 
// 3 (앞으로 주어질 입력의 개수 N개)
// a
// b
// c

// 출력 
// ['a','b','c']

공백이 포함된 문자 여러 줄 입력받기

const readline = require("readline");

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

let input = [];

rl.on("line" , (line)=>{
  input = line.split(' ').map(el=>parseInt(el));
});

rl.on("close",()=>{
  // 입력이 끝난 후 실행할 코드 
  console.log(input);
  process.exit();
});

// 입력 
// 1 2 3 
// 4 5 6

// 출력 
// [[1,2,3],[4,5,6]]

위와 같은 방식도 rl.close()를 호출해주지 않았기 때문에 무한히 입력 받을 수 있다. 그래서 조건을 걸어주어 특정 조건을 만족하면 rl.close()를 호출하여 종료시켜주는 것이 좋다.

끝까지 읽어주셔서 감사합니다. 😁

📌 참고

JS 콘솔 입력 받는 법

profile
끊임없이 노력하는 개발자

0개의 댓글