IT Study/프로그래머스

[프로그래머스/JavaScript] 문자열 출력하기 (Feat. 기초 트레이닝)

three kim 2023. 10. 10. 17:59
728x90

 

초기 코드

const readline = require('readline');

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

let input = [];

rl.on('line', function (line) {
    input = [line];
}).on('close',function(){
    str = input[0];
});

 

완성 코드 (기존 코드에 console.log(str);만 추가)

// readline(콘솔에서 사용자 입력 읽기) 모듈 불러오기
const readline = require('readline');

// readline 모듈을 사용해 인터페이스를 생성
const rl = readline.createInterface({
    // process.stdin: 콘솔 입력을 사용
    input: process.stdin,
    // process.stdout: 콘솔 출력을 사용
    output: process.stdout
});

// 사용자의 입력을 저장할 배열 초기화
let input = [];

// 'line' 이벤트: 사용자가 엔터 키 입력 시 발생하는 이벤트
rl.on('line', function (line) {
    // 입력된 문자열을 배열에 저장 (배열의 첫 번째 원소로만 저장)
    input = [line];
}).on('close', function () {
    // 'close' 이벤트: 사용자가 입력을 마치고 프로그램 종료 시 발생하는 이벤트
    // 저장된 입력 값을 변수에 할당 및 출력
    str = input[0];
    console.log(str);
});

// 코드 실행이 종료되지 않도록 하기 위해 입력 대기 상태 유지

 

이 문제에서 가져가야 할 ⭐️ new ⭐️ 개념은 다음과 같습니다.

(1) require: require는 Node.js에서 모듈을 불러오는 데 사용되는 키워드입니다.
다른 파일이나 라이브러리의 기능을 현재 파일에서 사용할 수 있게 해줍니다.


(2) readline 모듈: Node.js의 내장 모듈 중 하나로, 콘솔에서 사용자 입력을 읽을 수 있게 해주는 모듈입니다.

(3) readline.createInterface(): readline 모듈의 메서드로, 입력 및 출력을 지정하여 인터페이스를 생성합니다.
이를 통해 콘솔에서 사용자 입력을 받을 수 있습니다.


(4) rl.on(): 이벤트를 처리하는 메서드로, 지정된 이벤트가 발생했을 때 실행될 콜백 함수를 등록합니다.

(5) 'line' 이벤트: 사용자가 엔터 키를 입력하면 발생하는 이벤트입니다.
입력된 문자열을 처리하기 위한 로직이 이 이벤트 핸들러에 정의되어 있습니다.


(6) 'close' 이벤트: 사용자가 입력을 마치고 프로그램을 종료할 때 발생하는 이벤트입니다.
입력을 처리하고 프로그램을 종료하는 로직이 이 이벤트 핸들러에 정의되어 있습니다.


(7) process.stdin: Node.js에서 제공하는 표준 입력 스트림입니다.
readline 모듈을 통해 이 스트림을 사용하여 사용자의 입력을 읽어옵니다.


(8) process.stdout: Node.js에서 제공하는 표준 출력 스트림으로, 콘솔에 출력하는 데 사용됩니다.

 

그 중 require, readline에 대한 개념을 살펴보도록 하겠습니다.

 

(1) require

require과 import

외부 파일이나 라이브러리를 불러올 때 사용하는 키워드

NodeJs, CommonJS에서는 require,
JS, ES6에서는 import를 사용하는 개념이라고 생각하면 됩니다.

 

// 사용자 정의 모듈 가져오기

// math.js
exports.add = (a, b) => a + b;

// main.js
const math = require('./math');
console.log(math.add(2, 3)); // 5

 

(2) readline 모듈

readline
콘솔에서 사용자 입력을 읽는 모듈

 

readline 모듈을 사용하기 위해서는 아래와 같은 단계를 거쳐야 합니다.

// 1. 모듈 불러오기
const readline = require('readline');

// 2. Interface 생성하기
const rl = readline.createInterface({
    input: process.stdin, // 표준 입력
    output: process.stdout // 표준 출력
});

// 3. 이벤트 리스너 등록하기
rl.on('line', function (line) {
    console.log('사용자 입력:', line); // line: 엔터 키 입력 시 이벤트 발생
});

// 4. close 이벤트 처리
rl.on('close', function () {
    console.log('프로그램 종료');
});