본문 바로가기

ALGORITHM

(백준/구름) 자바스크립트로 입력 출력 받기, 백준/구름 세팅하기, 입력 유형별 코드 정리

 

 

프로그래머스와 달리 백준과 구름은 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();
})();