입력 방법
`fs` 모듈
파일 시스템과 상호작용할 수 있게 해주기 때문에 테스트 케이스가 파일로 존재할 때 사용한다.
`fs.reqdFileSync('/dev/stdin').toString()`을 통해 문자열을 읽고 split를 통해 문자열을 괄호 안의 기준으로 끊어 input 배열로 반환한다.
장점:
- 단순성: readFileSync를 사용하여 동기적으로 전체 입력을 한 번에 읽어올 수 있어 코드가 간결
- 속도: 한 번에 입력을 읽어와서 처리하므로 작은 입력의 경우 빠르게 처리
- 간편성: 설정 없이 바로 사용할 수 있어 초보자에게 친숙
단점:
- 메모리 사용량: 입력이 매우 큰 경우, 한 번에 메모리에 올리므로 메모리 사용량이 많음
- 비동기 처리 불가능: 동기적으로 처리되므로 비동기적으로 입력을 받아야 하는 상황에서는 부적합
한 글자 입력
12345
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim(); // 문자열, 숫자 입력
// 문자열
// String 12345
console.log('String', input)
// 숫자
// Number: 12345
const num = Number(input);
console.log('Number:', num);
공백 있는 여러 글자 입력
1 2 3 4 5
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim(); // 문자열, 숫자 입력
// 문자열 배열
// String Array: 1 2 3 4 5
console.log('String Array:', input);
// 숫자 배열
// Number Array: [1, 2, 3, 4, 5]
const numArray = input.map(Number);
console.log('Number Array:', numArray);
여러 줄 입력
example string
1 2 3
4 5 6
7 8 9
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');
const str = input[0]
const nums = []
for (let i = 1; i < input.length; i++) {
if (input[i] !== '') {
nums.push(input[i].split(' '));
}
}
// String: example string
console.log('String:', str);
// Number Array: [ [ '1', '2', '3' ], [ '4', '5', '6' ], [ '7', '8', '9' ] ]
console.log('Number Array:', nums);
첫 줄 N 다음 줄 공백 구분 여러 값 입력
3
1 2 3
4 5 6
const fs = require('fs');
// /\s/는 문자열을 공백(스페이스, 탭, 새 줄 등) 문자(white space)로 구분하는 데 사용
// 연속된 공백(하나 이상의 공백)을 처리하려면 /\s+/를 사용
const [n, ...arr] = fs.readFileSync("/dev/stdin").toString().trim().split(/\s+/);
// 3
console.log(n)
// ['1', '2', '3', '4', '5', '6']
console.log(arr)
첫 줄 N 다음 줄 여러 개 걸쳐 한 줄에 하나의 값 입력
3
1
2
3
4
5
6
const fs = require('fs');
const [n, ...arr] = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
// 3
console.log(n)
// ['1', '2', '3', '4', '5', '6']
console.log(arr)
2차원 배열 입력
3 3
1 2 3
4 5 6
7 8 9
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const [rows, cols] = input[0].split(' ').map(Number);
// 첫 번째 이후 줄 각 줄 공백 분할하고 숫자로 변경
const array2D = input.slice(1, rows + 1).map(line => line.split(' ').map(Number));
// 2D Array: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]
console.log('2D Array:', array2D);
`readline` 모듈
장점:
- 동기적 처리: readline은 이벤트 기반으로 한 줄씩 처리할 수 있어, 대화형 입력이나 라인 단위로 입력을 받을 때 유용
- 메모리 효율성: 입력이 매우 큰 경우, 한 줄씩 처리함으로써 메모리를 효율적으로 사용
- 유연성: 여러 종류의 입력을 대화형으로 처리
단점:
- 복잡도: 설정과 이벤트 핸들링이 필요하여 코드가 다소 복잡해짐
- 비동기적 처리: 비동기적으로 작동하므로, 모든 입력을 받은 후 처리할 때는 추가적인 코드가 필요
한 글자 입력
5
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Enter input: ', (answer) => {
console.log('String:', answer); // String: 5
const num = Number(answer);
console.log('Number:', num); // Number: 5
rl.close();
});
여러 줄 입력
1
2
3
4
5
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', (line) => {
input.push(line);
});
rl.on('close', () => {
console.log('String Array:', input); // String Array: [ '1', '2', '3', '4', '5' ]
const numArray = input.map(Number);
console.log('Number Array:', numArray); // Number Array: [ 1, 2, 3, 4, 5 ]
});
공백 있는 여러 글자 입력
1 2 3 4 5
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Enter elements separated by space: ', (answer) => {
const numArray = answer.split(' ').map(Number);
console.log('Number Array:', numArray); // Number Array: [ 1, 2, 3, 4, 5 ]
rl.close();
});
2차원 배열 입력
3 3
1 2 3
4 5 6
7 8 9
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', (line) => {
input.push(line);
});
rl.on('close', () => {
const [rows, cols] = input[0].split(' ').map(Number);
const array2D = input.slice(1, rows + 1).map(line => line.split(' ').map(Number));
// 2D Array: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]
console.log('2D Array:', array2D);
});
'개발 기초 > 언어' 카테고리의 다른 글
[JavaScript] 잘못된 변수 키워드는 이상한 결과가 되 (0) | 2024.07.14 |
---|---|
[JavaScript] 힙 자료구조 (1) | 2024.06.30 |
[Java] 변수와 자료형 (0) | 2024.06.30 |
[Java] 입출력 (0) | 2024.06.30 |
[Java] 코드 구조 (0) | 2024.06.30 |