문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', function (line) {
input.push(line);
}).on('close',function(){
let str = input.join('\n');
console.log(str);
});
첫 프로그래머스 문제인데 내가 배운개념에서 이해할 수 있는 게 하나도 없었다.
그래서 우선은 하나 하나 뜯어보기 시작함
const readline = require('readline');
첫 부분부터 막혔다. const readline = require('readline'); 내가배운 개념에서는 require('readline')을 변수로 지정한다인데 requir은 어디서 튀어나온놈인가 싶다. 구글링 필요하다.
readline 모듈이라고 하는데 그럼 readline 모듈은 뭔지 아래처럼 정의되어있음.
Definition and Usage
The Readline module provides a way of reading a datastream, one line at a time.
한번에 한줄씩 데이터스트림을 읽는 방법을 제공한다는데 데이터스트림은 뭔지 아직도 모르겠다.
찾아보니 간단하게 말해서 '입출력을 한줄씩 처리하는 모듈이라고 함.'
모듈 vs 라이브러리 차이
Module
- 별도의 파일로 분리된 독립된 기능을 뜻한다.
(순수한 JavaScript에서는 모듈이라는 개념이 분명하게 존재하지 않는다고 한다.)
JavaScript가 구동되는 호스트 환경에 따라서 서로 다른 모듈화 방법이 제공된다.
호스트 환경?
:자바스크립트가 돌아가는 플랫폼을 호스트(host) 라고 불림. 호스트는 브라우저, 웹서버가 될 수 있다. 각 플랫폼은 해당 플랫폼에 특정되는 기능을 제공하는데, 자바스크립트 명세서에선 이를 호스트 환경(host environment) 이라고 부릅니다.
Library
- 라이브러리는 모듈과 비슷한(거의 같은) 개념이다.
모듈이 프로그램을 구성하는 작은 부품의 느낌이라면, 라이브러리는 자주 사용 되는 로직을 잘 정리한 집합 느낌이다.
- 위키백과에서는 라이브러리를 다음과 같이 설명하고 있다.
컴퓨터 프로그램이 사용하는 비휘발성 자원의 모임으로 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 사양을 포함할 수 있다.
const rl = readline.createInterface({ input: process.stdin, output: process.stdout
메소드 createInterface는 입력과 출력 스티림 두가지 매개 변수를 사용해서 readline interface를 생성함
input 매개변수로 createInterface는 process.stdin을 사용 , output은 procee.stdout을 사용한다.
let input = []; rl.on('line', function (line) { input.push(line); }).on('close',function(){ let str = input.join('\n'); console.log(str); });
rl.on()
readline.Interface 인스턴스(rl)에서 .on()메소드로 Interface가 내장한 이벤트들을 실행한다.
생성된 readline.Interface 인스턴스에서 가장 많이 쓰이는 이벤트는 line이벤트다.rl.close()
rl.close()메소드는 readline.interface인스턴스와 입력 및 출력 스트림 제어를 종료한다.
rl.close()메소드가 호출되면 readline.interface인스턴스에서 'close 이벤트'가 발생된다. (그래도 다른 이벤트(e.g. line 이벤트)가 발생하는 것을 즉각적으로 중지시키지는 않는다.)
한참을 찾아서 겨우 이해했다. 아직 코딩세계는 어렵다. 아무래도 기초적인 지식과 모듈, 라이브러리 등에 관한 공부를 조금더 열심히 해야겠다고 생각했다.
'programmers' 카테고리의 다른 글
2023-05-26 programmers (2) 몫 구하기 (0) | 2023.05.26 |
---|