
사용자의 입력값을 받아 처리하는 문제가 가장 기본적이기 때문에 입력값을 받는 방법에 대해 알아본다.
자바스크립트에서 사용자의 입력을 받을 때, 보통 아래의 두가지 방법을 사용한다.
readline 사용법
1. 모듈 호출
const readline = require('readline')
2. Interface 객체 생성
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
3. rl 변수
// 한 줄을 입력받는 코드
rl.on("line", (line) => {
// 실행할 코드
rl.close(); // 닫아주지 않으면 입력을 계속받음
})
rl.on('close', () => {
// 실행할 코드
process.exit();
})
// 한 줄 입력받는 코드 전체
// 모듈 호출
const readline = require("readline")
// 인터페이스 객체 생성
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
})
// rl을 통해 한 줄 입력받고 바로 출력하기
rl.on("line", (line) => {
console.log("input: ", line);
rl.close();
})
rl.on('close', () => {
process.exit();
})
// 여러 줄 입력받는 코드 전체
// 여러 줄을 입력받는 경우에는 rl.close를 제거해주면된다.
// 여러입력값을 저장할 빈 배열이 필요하다.
// 입력종료는 ctrl + c로 한다.
// 모듈 호출
const readline = require("readline")
// 인터페이스 객체 생성
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
})
// 빈 배열 생성
let input = []
// rl을 통해 여러줄 입력받기
rl.on("line", (line) => {
// 입력받은 값 배열에 저장
input.push(line)
})
rl.on('close', () => {
console.log(input)
process.exit()
})
// 공백을 기준으로 여러 값 받기
// 입력종료는 ctrl + c로 한다.
// 모듈 호출
const readline = require("readline")
// 인터페이스 객체 생성
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
})
// 빈 배열 생성
let input = []
// rl을 통해 여러줄 입력받기
rl.on("line", (line) => {
// 공백을 기준으로 split해서 정수로 변환하여 저장
input.push(line.split(' ').map(el => parseInt(el)));
})
// 입력받기가 끝나면 입력받은값을 출력함
rl.on('close', () => {
console.log(input)
process.exit()
})
fs 사용법
1. 모듈 호출
const fs = require('fs');
2. 하나의 값을 입력 받기
// 백준에서는 ('/dev/stdin')으로 경로를 명시해주면 된다
// 만일 로컬에서 테스트해보고 싶다면 input.txt를 생성하고 입력값을 작성한 뒤
// .. 경로를 ('input.txt')로 명시해주면 입력값을 받아올 수 있다.
// .. 단, js파일과 txt파일을 같은 경로에 위치시켜야한다.
// 백준
const input = fs.readFileSync('/dev/stdin').toString().trim();
// 로컬 예시
const input = fs.readFileSync('input.txt').toString().trim();
// 이렇게 받은 입력값은 input에 1대1로 할당되며 input으로 바로 사용가능하다.
// 위에서 모듈을 호출하여 fs에 할당해주었지만 따로 할당하지 않고도 가능하다
// 아래는 그 예시이며, 기대할 수 있는 효과는 두줄이 한줄로 압축된다는 점이다.
const input = require('fs').readFileSync('/dev/stdin').toString().trim();
3. 여러 값을 입력 받기
// 입력받은 여러개의 값은 input에 1대N으로 저장되며,
// .. input[0]과 같은 인덱싱으로 값을 사용할 수 있다.
// trim()은 입력값의 앞뒤 공백을 제거해주는 역할을 한다.
const input=fs.readFileSync('/dev/stdin').toString().split('\n');
4. 공백, 줄바꿈으로 구분하여 여러값을 입력 받기
// 공백을 구분으로 입력값 여러개 받기
const input=fs.readFileSync('/dev/stdin').toString().split(' ');
// 줄바꿈을 구분으로 입력값 여러개 받기
const input=fs.readFileSync('/dev/stdin').toString().split('\n');
반응형
'Algorithm > Javascript' 카테고리의 다른 글
| [ 프로그래머스 ] 개미 군단 ( JS ) (0) | 2024.06.18 |
|---|---|
| [ 프로그래머스 ] 순서쌍의 개수 ( JS ) (0) | 2024.06.18 |
| [ 프로그래머스 ] 진료순서 정하기 ( JS ) (0) | 2024.06.18 |
| [백준 - 문제풀이] 1000번 외 4개 문제 : 사칙연산 ( Node.js ) (0) | 2023.11.28 |
| [백준 - 문제풀이] 2557번 : Hello World ( Node.js ) (0) | 2023.11.28 |
