오늘 공부한 내용 요약
js의 내장모듈
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function (line) {
((1))
}).on('close', function () {
process.exit();
});
기본적으로 위의 코드를 토대로 ((1))에 fs모듈에서와 같이 선언하고 호출하면 되는 방식.
각각을 간단히 알아보면
input: process.stdin,
이건 사용자의 입력을 받기 위함이고
output: process.stdout
이건 출력 이벤트를 위함이며
process.exit();
프로세스의 실행을 종료하고 프로그램을 끝냄
Baekjoon에서 문제풀이
1) 문제 : N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.
첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다. 출력형식과 같게 N1부터 N9까지 출력한다.
ex) 2입력시 2 * 1 =2 이런식으로 쭉 출력되야함
풀이
1.
const fs = require('fs');
const input = readFileSync('/dev/stdin').toString().trim().split();
const N = Math.floor(parseInt(input[0]));
if (N>=1 && N <= 9){
for(let i=1; i <10 ; i++) {
console.log(`${N} * ${i} = ${N * i}`);
}
}
런타임 오류라고 뜨지만 fs모듈이라 오류가 뜨는거 같음 / 맞다고 생각
const readline = require('readline');
const rl = readline.createInterface({
input : process.stdin,
output : process.stdout
});
let input = [];
rl.on('line',function(line) {
let N = parseInt(line);
for (let i = 1; i <= 9; i++) {
console.log(`${N} * ${i} = ${N * i}`);
}
}).on('close', function () {
process.exit();
});
readline 모듈로 하니 해결
앞서 풀었던 문제들 중 일부를 readline모듈을 이용해 풀어봄
2) 문제 : 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 첫째 줄에 A와 B가 주어진다. (0 < A, B < 10) .첫째 줄에 A+B를 출력한다.
풀이
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function (line) {
const input = line.split(' ');
let A = parseInt(input[0]);
let B = parseInt(input[1]);
if(A>0 && B <10) {console.log(A+B); }
rl.close();
}).on('close',function() {
process.exit();
});
readline 모듈로 풀이해봄
3) 문제 : 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오. 서기 연도를 알아보고 싶은 불기 연도 y가 주어진다.
(1000 ≤ y ≤ 3000)
풀이
1.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function (line) {
const input = line.split(' ');
let y = parseInt(input[0]);
if (1000 <= y <= 3000 ) {
console.log(y - 543);
}
}).on('close', function () {
process.exit();
});
풀이
1.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function (line) {
const input = line.split(' ');
let H = parseInt(input[0]);
let M = parseInt(input[1]);
if (M-45 >=0 ){
console.log(`${H}` + " " + `${M-45}`);
} else if (H>=1){
console.log(`${H-1}` + " " + `${M+15}`);
} else {
console.log(23 + " " + `${M+15}`);
}
}).on('close', function () {
process.exit();
});
5) 문제 : 문제 : 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.
같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받음
같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받음
모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받음
3개 주사위의 나온 눈이 주어질 때, 상금을 계산하는 프로그램을 작성 하시오.
첫째 줄에 3개의 눈이 빈칸을 사이에 두고 각각 주어진다.
첫째 줄에 게임의 상금을 출력 한다.
풀이
1.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function (line) {
const input = line.split(' ');
let a = Math.floor(parseInt(input[0]));
let b = Math.floor(parseInt(input[1]));
let c = Math.floor(parseInt(input[2]));
let d = Math.max(a,b,c);
if (1<= a,b,c <= 6) {
if (a==b && a==c && b==c) {
console.log(`${10000+(a*1000)}`);
} else if (a !==b && a!==c && b!==c) {
console.log(`${d*100}`);
} else if (a-b ==0){
console.log(`${1000+(a*100)}`);
} else {
console.log(`${1000+(c*100)}`);
}
}
}).on('close', function () {
process.exit();
});
6) 문제 : 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.
(연도는 1보다 크거나 같고, 4000보다 작거나 같은 자연수이다)
풀이
1.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function (line) {
const input = line.split(' ');
let a = parseInt(input[0]);
if (a>=1 && a <=4000) {
if ((a % 4==0)&&(a % 100 !=0)) {
console.log(1);
} else if((a % 4==0)&&(a % 400==0)){
console.log(1);
} else {
console.log(0);
}
}
}).on('close', function () {
process.exit();
});
7) 문제 : n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.
첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.
1부터 n까지 합을 출력한다.
풀이
1. fs모듈 사용
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split(' ');
let n = parseInt(input[0]);
if (1 <= n && n<= 10000) {
let sum = 0;
for(let i=1 ; i <= n; i++) {
sum += i;
}
console.log(sum);
}
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', function (line) {
const input = line.split(' ');
let n = parseInt(input[0]);
if (1 <= n && n<= 10000) {
let sum = 0;
for(let i=1 ; i <= n; i++) {
sum += i;
}
console.log(sum);
}
}).on('close', function () {
process.exit();
});
하루 돌아보며
완벽히는 아니지만 readline 모듈사용법을 어느정도 알겠음.
만족도 : ★★☆☆☆
공부 출처
위의 내용은 공부중 본인이 이해한 내용으로 몇몇 틀린 내용이 있을 수 있습니다.
회독중 발견시 수정하겠습니다