[프로그래머스] 자바스크립트 readline 사용하기 - JS(자바스크립트)

2025. 1. 24. 16:49·코테

프로그래머스 코테 기초 문제를 푸는데 내가 아는 입력 출력은 prompt를 받아서 console.log로 출력하는 방법이었다. 그래서 기초 문제에서 Day1에 문자열 출력하기가 있어서 그렇게 푸는 문제인줄 알았는데 처음보는 긴 코드가 준비되어있어서 당황했다.

그래서 readline에 대해 알아보려 한다.

 

readline 이란?


Node.js에서 표준 입력(키보드 입력)과 표준 출력(콘솔 출력)을 처리하기 위한 내장 모듈

 사용자로부터 데이터를 읽거나, 대화형 입력을 처리할 때 유용하게 사용

 

기본 사용법

const readline = require('readline');

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

// 사용자 입력 이벤트 처리
rl.on('line', (line) => {
  console.log(`입력받은 값: ${line}`);
  rl.close(); // 입력 종료
});

주요 메소드

  • rl.on('line', callback) 
    • 사용자가 Enter를 눌러 한 줄의 입력이 들어왔을 때 실행됩니다.
    • callback의 첫 번째 매개변수로 입력받은 문자열을 전달합니다.
  • rl.on('close', callback)
    • 입력 인터페이스가 닫힐 때 호출됩니다.
    • rl.close()를 호출하거나, Ctrl+D를 눌러 입력을 종료하면 실행됩니다.
  • rl.question(question, callback)
    • 지정한 메시지를 출력하고, 사용자로부터 입력을 받아 처리할 수 있습니다.
  • rl.colse()
    • readline 인터페이스를 닫습니다. 입력을 종료할 때 사용한다. 

 

사용 예제

- 계산기

const readline = require('readline');

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

rl.question('첫 번째 숫자를 입력하세요: ', (num1) => {
  rl.question('두 번째 숫자를 입력하세요: ', (num2) => {
    const sum = parseFloat(num1) + parseFloat(num2);
    console.log(`두 숫자의 합은 ${sum}입니다.`);
    rl.close();
  });
});
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);
});

프로그래머스의 기본 코드보다 챗 gpt의 사용코드가 더 이해가 잘되는 듯 하다. question 메소드를 사용해서 더 간결하게 보이는 코드를 사용해야겠다. 

question 메소드를 사용해서 코드를 작성했더니 결과값이 input이 나왔다. 

line, close를 사용한 코드가 잘 이해가 안되는 이유가 input = [line] 부분이 잘 이해가 안돼서 이다. 

 

input 이라는 변수에 []배열을 넣는다는게 뭐지? 

line은 사용자가 입력한 한 줄의 문자열. ex) 사용자가 Hello를 입력하고 엔터를 누르면 line의 값은 'Hello'

input = [line] 란?

line 값을 배열로 저장하는 작업. input은 배열이다. [line]은 line 값 하나만 들어있는 배열을 생성한다.

let line = 'Hello';   // 사용자가 입력한 값
let input = [line];   // line 값을 배열로 저장
console.log(input);   // 출력: ['Hello']

 

즉, 사용자가 입력한 문자열을 배열의 첫 번째 요소로 저장한 것. 

'코테' 카테고리의 다른 글

[프로그래머스] 문자열 붙여서 출력하기 - JS(자바스크립트)  (0) 2025.01.27
[프로그래머스] 두 수의 나눗셈 - JS(자바스크립트)  (1) 2025.01.26
[프로그래머스] 대문자를 소문자로, 소문자를 대문자로 변환하기 - JS(자바스크립트  (1) 2025.01.24
[프로그래머스] 문자열 출력하기 - JS(자바스크립트)  (0) 2025.01.24
[프로그래머스] 조건 연산자 사용 - JS(자바스크립트)  (0) 2025.01.22
'코테' 카테고리의 다른 글
  • [프로그래머스] 두 수의 나눗셈 - JS(자바스크립트)
  • [프로그래머스] 대문자를 소문자로, 소문자를 대문자로 변환하기 - JS(자바스크립트
  • [프로그래머스] 문자열 출력하기 - JS(자바스크립트)
  • [프로그래머스] 조건 연산자 사용 - JS(자바스크립트)
eun_log
eun_log
  • eun_log
    개발은
    eun_log
  • 전체
    오늘
    어제
    • 분류 전체보기 (75)
      • 코테 (17)
      • CS (6)
        • 자료구조, 알고리즘 (3)
        • 네트워크 (0)
        • 데이터베이스 (2)
        • 운영체제 (0)
      • frontend (32)
        • JavaScript (29)
        • html&css (1)
        • project_study (2)
      • backend (15)
        • Java (15)
      • project (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
eun_log
[프로그래머스] 자바스크립트 readline 사용하기 - JS(자바스크립트)
상단으로

티스토리툴바