[백준 - 개념정리] Node.js에서 입력값은 어떻게 받는가?

2023. 11. 28. 18:48·Algorithm/Javascript

 

 

사용자의 입력값을 받아 처리하는 문제가 가장 기본적이기 때문에 입력값을 받는 방법에 대해 알아본다.

자바스크립트에서 사용자의 입력을 받을 때, 보통 아래의 두가지 방법을 사용한다.

 


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
'Algorithm/Javascript' 카테고리의 다른 글
  • [ 프로그래머스 ] 순서쌍의 개수 ( JS )
  • [ 프로그래머스 ] 진료순서 정하기 ( JS )
  • [백준 - 문제풀이] 1000번 외 4개 문제 : 사칙연산 ( Node.js )
  • [백준 - 문제풀이] 2557번 : Hello World ( Node.js )
heee1
heee1
FE 개발자를 희망하는 임희원 입니다.
  • heee1
    heee1.blog
    heee1
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • Front-end (1)
        • Javascript (4)
        • Typescript (1)
        • React (0)
        • Next.js (1)
        • Tool (1)
        • Git (1)
        • Prettier (0)
        • Test-Framework (1)
        • Vercel (1)
      • 교육 (28)
        • 항해99 : 웹개발 종합반 18기 (14)
        • 프로젝트 캠프 : React 2기 (5)
        • 코드잇 스프린트 : 단기심화 5기 (9)
      • Algorithm (29)
        • Javascript (24)
        • Python (5)
      • 코드 보관함 (1)
        • 배치스크립트 ( .bat ) (1)
  • 블로그 메뉴

    • 홈
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    Python
    모킹
    항해99
    speed insights
    코드잇
    테스트 프레임워크
    Baekjoon
    자바스크립트
    node.js
    next.js
    오블완
    react-spring
    백준
    티스토리챌린지
    JavaScript
    css animation
    til
    스프린트
    tailwindcss
    jest
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
heee1
[백준 - 개념정리] Node.js에서 입력값은 어떻게 받는가?
상단으로

티스토리툴바