반응형

문제설명

문자열 str이 주어질 때, str을 출력하는 코드를 작성해 보세요.

 

프로그래머스 문자열 출력하기 문제화면

정답코드


      
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)
});

해설

주어진 코드에 console.log(str)만 추가하면 되는 문제였다.

하지만 자바스크립트 코딩테스트 문제에 익숙하지 않았기 때문에 기본 제공되는 코드의 해석이 어려워 하나하나 정리하고 넘어가도록 하겠다.

 

1) const readline = require('readline');

NodeJS 문법이라고 한다.

require 메서드를 통해 외부 모듈을 가져온다고 한다.

The node:readline module provides an interface for reading data from a Readablestream (such as process.stdin) one line at a time.

 

NodeJS 도큐먼트에 나와있는 내용이다.

ReadableStream 스트림으로부터 한 번에 한 줄씩 데이터를 읽어오는 인터페이스를 제공하는 것 같다.

 

2) readline.createInterface

readline 모듈의 createInterface메서드를 사용해 새로운 객체를 만든다.

input으로 process.stdin을, output으로 process.stdout을 설정하여 표준 입력과 출력을 사용한다.

 

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

rl인터페이스 객체에 line이벤트 리스너를 등록한다.

line이벤트는 사용자가 Enter키를 눌러 한 줄의 입력을 완료했을 때 발생한다.

이벤트가 발생하면 콜백 함수가 실행되고 line 매개변수로 입력된 문자열이 전달된다.

 

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

rl 인터페이스 객체에 close 이벤트 리스너를 등록한다.

close이벤트는 입력 스트림이 종료될 때 발생한다.

close이벤트가 발생하면 콜백 함수가 실행되고 input배열의 첫 번째 요소를 str변수에 할당한다.

 

마지막으로 console.log(str)로 변수를 출력한다.

 

느낀점

코딩테스트 문제를 풀 때 가장 먼저 마주하게 되는 관문이라고 할 수 있는 입출력이다.

보통 처음에 문제 풀이를 시작하게 되면 문자열 출력이나, 사칙연산 같은 간단한 문제를 풀게 되는데, 정작 그 문제는 별 것 없지만 그 문제를 입출력하는데서 막히게 된다.

 

이럴 때는 재빠르게 검색해서 그냥 이런 게 있구나 정도만 보고 넘기는 게 좋을 것 같기는 하다.

사칙연산 단계에서 이걸 이해하려고 하면 어려울 것 같다는 생각이 든다.

 

나는 그냥 자바스크립트 문제가 낯설어서 공부하는 겸 정리해 보았다.

반응형
그레이트현