프로그래머스와 달리 백준과 구름은 node.js로 입력과 출력을 직접 구현해야 하기에,
처음 시작할 때 다소 복잡하고 어렵게 느껴질 수 있다.
따라서 이번 포스팅에서는 입력 유형별로 기본 세팅 코드를 정리하려고 한다.
여기서 사용된 코드는 구름의 기본 코드를 기반으로 작성되었다.
1. 입력이 한 줄이고 띄어쓰기로 구분되어 있을 때
const readline = require('readline');
(async () => {
let rl = readline.createInterface({ input: process.stdin });
const input = [];
for await (const line of rl) {
input.push(...line.split(" ").map(x=>+x)); //input 숫자 배열로 전환
rl.close();
}
console.log(input);
process.exit();
})();
2. 입력이 여러 줄 일 때
입력을 몇 번 받아야 할지 그 횟수가 고정되어 있다면 아래 코드를 사용하면 된다.
const readline = require('readline');
(async () => {
let rl = readline.createInterface({ input: process.stdin });
const input = [];
let counter = 2; //입력을 받아와야 하는 횟수-1 저장
for await (const line of rl) {
if (counter===0){
rl.close();
}else{
counter--;
input.push(...line.split(" ").map(x=>+x)); //input 숫자 배열로 전환
}
}
console.log(input);
process.exit();
})();
3. 첫 번째로 입력 횟수가 주어지고, 입력 횟수만큼 입력을 받아야 할 때
다양한 문제에서 사용되는 입력 패턴이다.
예를 들어 맨 처음 입력이 4라면 그 이후 입력을 4번 받아와야 하는 식이다.
백준 1058번 문제가 이런 경우이다.
const readline = require('readline');
(async () => {
let rl = readline.createInterface({ input: process.stdin });
const input = [];
let counter; //카운터 세팅
for await (const line of rl) {
if (counter===undefined){
counter = parseInt(line)-1; //최초 입력을 카운터에 할당
}else{
if(counter===0) rl.close(); //카운터가 0이 되면 입력받기 중단
counter--;
input.push(...line.split(" ").map(x=>+x)); //input 숫자 배열로 전환
}
}
console.log(input);
process.exit();
})();
'ALGORITHM' 카테고리의 다른 글
(Algorithm/Javascript) stack이란? 자바스크립트로 stack구현하기 (0) | 2024.07.02 |
---|---|
(Algorithm/Javascript) 트리 노드 만들고 xml 형태로 출력하기 (0) | 2024.07.01 |
(Algorithm) 알고리즘, 문제해결 패턴, 빈도 수 세기 패턴, Frequency Counter (0) | 2024.06.03 |