최근들어 프론트엔드 직군에서는 자바스크립트로 코딩테스트를 보는 회사와 교육기관들이 많이 늘어남에 따라 자바스크립트로 알고리즘 문제를 풀 때 기본적인 입출력 방식을 정리해보겠습니다.
우리가 살펴 볼 것들은 아래와 같습니다.
이러한 것들은 모두 다 기본적으로 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()를 호출해주지 않기 때문에 계속해서 값을 입력받을 수 있다.
따라서 , 아래와 같이 조건을 걸어주는것이 필요하다.
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()를 호출하여 종료시켜주는 것이 좋다.
끝까지 읽어주셔서 감사합니다. 😁