옥수수와 식빵 그리고 코딩

문자열 출력하기 본문

2023/프로그래머스

문자열 출력하기

옥식 2023. 10. 6. 16:48

프로그래머스 lv.0 1번문제.

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

const부터 생소했다. 이에 관한건 다른 페이지에 정리해둠.

[1] readline은 javascript에 내장된 모듈로 한 줄씩 입출력을 처리할 수 있게 도와주는 모듈.

[2] 모듈을 불러오기 위해서는 require("모듈이름")의 형태로 불러오고 변수로 선언하여 저장한다.

const readline = require("readline")

[3] 정의한 변수로 readline 인터페이스 객체를 만든다.

 - readline interface 객체를 이용해 콘솔에서 표준 입출력을 처리할 수 있음

 - createInterface()메서드를 이용해 객체를 만들고 rl변수에 저장한다.

 * process.stdin : 표준입력장치로 받는 입력, process.stdout : 표준출력장치로 나가는 출력

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

[4] on 메서드

생성한 rl객체로 입출력과 관련된 여러 이벤트를 처리할 수 있다. ex) 사용자가 콘솔에 입력을 넣는 것

on메서드를 이용하면 이벤트가 발생할 때 실행할 동작을 지정할 ㅅ ㅜ있다.

 

[5] line 이벤트

여기서 'line'은 이벤트로 사용자가 콘솔에 입력을 할 때 발생한다.

입력이벤트는 줄바꿈 제어문자 \n, \r, \r\n 이 입력스트림에 나타나거나, 사용자가 Enter 또는 Return을 누를 때 발생함.

rl.on("line", function(x) {
  console.log(x);
});

이런 코드에서 사용자가 입력이벤트 (ex. enter키)를 발생시키면 x면수를 통해 사용자가 입력한 내용이 저장되고, 이를 콘솔에 출력하게 됨.

 

이벤트은 항상 on + 이벤트명으로 나온다. 이벤트란 뭘까?

참고

https://resilient-923.tistory.com/299

 

[javascript 자바스크립트] 이벤트 리스너 란?

리액트를 복습하면서 이벤트 리스너에 대해서 다시 한번 정리해보려고 한다. 이벤트 리스너를 정리하기 전에 이벤트에 대해서 먼저 정리해보려고 한다. 동적인 웹 애플리케이션 구현을 위해서

resilient-923.tistory.com

[6] close 이벤트

"close"이벤트는 readable 스트림 종료를 제어하는 이벤트로 "line"이벤트와 비슷한 형태로 작성된다.

.on("close", function () {
});

close 이벤트는 더 이상 입력받을 것이 없을 때 rl.close()를 호출하여 발생시킵니다.
따라서 "line"이벤트와 함께 아래와 같이 사용됩니다.

rl.on("line", function (x) {
  console.log(x);
  rl.close(); // 입력 종료
}).on("close", function () {
  // 입력 종료 후 동작할 코드
});

 

[7] 정리정리

입력받은 한 줄을 그대로 출력해주는 코드

const readline = require("readline");

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

rl.on("line", function(x) {
  console.log(x);
  rl.close();
}).on("close", function() {
  process.exit();
});

때문에 우리는 이 문제를 해결하기 위해 입력 종료 후 입력받은 값을 그대로 출력해주는 코드만 추가하면 되는거다.

 

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)//추가한 코드
});

진짜 뭐가 뭔지 하나도 모르겠어서 지금까지 내가 공부한건 뭐였는지 생각하는 시간을 가졌다.

모르는 단어가 잔뜩 있는 것으로 보아 문법을 모르는 것 같아 TCP에서 자바스크립트 문법공부를 5시간 내내 하고 이러다간 끝이 없을 것 같아 다시 문제로 돌아왔다.

죽이 되든 밥이 되든 그냥 다른 사람들의 풀이를 봤는데 풀이를 봤음에도 이게 왜 정답인지 도무지 알 수가 없어서 구글에 해답을 검색했다.

그렇게 모르는 부분들을 하나하나 검색하면서 한시간만에 문제를 풀 수 있었다.

문제를 풀고 다시 해답지를 보니 다른사람들이 왜 저렇게 풀었는지 이유도 알 수 있었다.

 

파이썬이 그립다...

 

Comments