본문 바로가기

프로그래밍

[javascript] 표준 입력받기(readline )

728x90
반응형

값 입력받는 방법

1. 표준입력받기 readline 모듈 

2. fs모듈 

난 vscode로 테스트하고 백준에 제출중이기 때문에 2번은 경로문제가 발생한다.


readline 모듈 사용하여 값 입력받기

JS의 내장 모듈인 'readline' 모듈을 사용할 것이다. 

const readline = require('readline');
 
// 인터페이스 객체 생성.
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

처음 가장 기본이 되는 코드이다.

이후에는 어떤값을 어떻게 입력받느냐에 따라 코드가 변경된다.

가장 기본이 되는 readline메서드는 line과 close다.


  • 값 하나 입력 받기 
  • 정수 두개 입력 받기
  • 배열의 크기 N을 입력 받고, N개 정수 입력 받기

1. 값 하나 입력 받기 

let input;

rl.on("line",function(line){
    //line을 통해 사용자가 입력한 문자열이 들어온다.
    console.log(`print input string ${line}`);
    input = line;

    //정수형태는 parseInt로 형변환
    console.log(`print input number ${input}`);
    input = parseInt(line);
    
    //한줄 받고 입력 종료하기
    rl.close();

}).on("close",function(){
    //개발 로직 작성
    //함수이용
    solution(input);
    
    //프로세스 종료
    process.exit();
});

마지막 r1.close()가 무한이 입력을 받는지 아닌지 결정한다.

 

2.정수 두개 입력받기

let input =[];

rl.on("line", function(line){
     input = line.split(' ').map((el)=> parseInt(el));
     //한줄 받고 입력 종료하기
     rl.close();
     //input.push(line);//한줄씩 입력받고 무한으로 입력받음
     //ctrl+D로 종료
}).on("close",function(){
    let A = input[0];
    let B = input[1];
    console.log(A+B);
})

이걸로 백준 1000번 문제 풀 수 있다.(A+B)

두 정수가 공백을 기준으로 입력되기 때문에, split(' ') 넣기.

map(...)은 리스트 자료형인 line.split(' ')의 각 원소에 콜백 함수를 적용해주는 역할을 한다.(???)

 

3.배열의 크기 N을 입력 받고, N개 정수 입력 받기

let N;
 
// 몇번째 라인을 입력 받는지를 저장하는 변수
let count = 0; 
rl.on("line", function(line){
    if(count == 0)
        N = Number(line.trim());
    else if(count == 1){
        get_Min_Max(line.trim());
        rl.close();
    }
    count++;
})
 
function get_Min_Max(input){
    let arr = input.split(' ').map((num) => parseInt(num));
    console.log(arr); 
 
    // min, max 출력
    let min = Math.min.apply(null,arr);
    let max = Math.max.apply(null,arr);
    console.log('max:',max,'min:',min);
}

백준 10818번 최소, 최대 문제 푸는법

 

 

 

728x90
반응형