프로그래머스 코테 기초 문제를 푸는데 내가 아는 입력 출력은 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 |