Silver Library (Archived)
JS, for 문 - 10950 번, A+B - 3, .on method 본문
JS, for 문 - 10950 번, A+B - 3, .on method
Ayin Kim 2021. 7. 20. 22:25문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 A+B를 출력한다.
예제 입력 1
5
1 1
2 3
3 4
9 8
5 2
예제 출력 1
2
5
7
17
7
요약:
첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며,
각 줄에 A와 B가 주어진다. (0 < A, B < 10)
각 테스트 케이스마다 A+B를 출력한다.
우선, readline 모듈을 적용 해보기로 했다.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
그리고 답.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
// .on method 가 몇 문제 연속으로 계속 쓰인다.
// 자세히 보면, readline 이 여러 줄 연속해서 쓰이고 있다. ex) rl.on, .on
rl.on('line', function (line) {
input.push(line);
/*
예시)
< 입력 > < 입력을 받은 line 배열 >
2 [ '2', [ '3 4' ], [ '4 5' ] ]
3 4
4 5
*/
}).on('close', function () {
let count = Number(input[0]); // 테스트 케이스의 개수 <초기화>
let numbers = []; // numbers 값을 기본값으로 초기화
// 테스트 케이스 개수만큼, 각 케이스 배열 생성 후, numbers 배열에 할당
// for 문 사용
for (let i = 1; i <= count; i++) {
numbers.push(input[i].split(' '));
}
/*
< numbers 배열 >
[ [ '3', '4' ], [ '4', '5' ] ]
*/
/* 테스트 케이스 개수만큼
number 배열 안의, 각 케이스 배열 안 요소를 인덱스로 접근하여 합한다.*/
for (let i = 0; i < count; i++) {
num1 = Number(numbers[i][0]);
num2 = Number(numbers[i][1]);
console.log(num1 + num2);
}
process.exit();
});
on method
.on() method 는 다음과 같다.
"on method registers a handler, which is callback function with specific signature. Once an event is triggered, a handler is called. It receives necessary data as function parameters (commonly event object)."
.on() method 사용 예시:
const emitter = {
handlers: {},
on(eventName, handler) {
if (!this.handlers[eventName])
this.handlers[eventName] = [];
this.handlers[eventName].push(handler);
},
emit(eventName, data) {
for (const handler of this.handlers[eventName])
handler(data);
}
};
emitter.on('foo', data => console.log(data.text));
emitter.emit('foo', { text: 'Foo event triggered' });
그래서...정확히 뭘까? .on method.
"It is a method from Node's EventEmitter class:"
https://nodejs.org/docs/latest/api/events.html#events_emitter_on_eventname_listener
결론: emitter.on(eventName, listener)
더 나가면 너무 커지니, 추가로 언급만 하고 일단 줄이겠습니다.
"Whenever it makes sense for code to SUBSCRIBE to something rather than get a callback from something. The typical use case would be that there's multiple blocks of code in your application that may need to do something when an event happens."
https://stackoverflow.com/questions/38881170/when-should-i-use-eventemitter
line 으로 입력 받는다?
이에 대해서는 명쾌해 보이는 설명이 있습니다. readline, fs module 이 다시 등장.
비고 사항.
여기서 부터 '비슷한 문제' 가 보이기 시작한다.
참조: https://velog.io/@exploit017/10950AB3
https://stackoverflow.com/questions/55064633/how-is-javascript-on-method-defined
https://www.tutorialsteacher.com/nodejs/nodejs-eventemitter
'CS Library > JavaScript - Data Structure' 카테고리의 다른 글
BJ 2562 - JS (0) | 2021.08.06 |
---|---|
Note of readline module - Node.js (0) | 2021.07.24 |
JS, for 문 - 백준 2739: 구구단 (0) | 2021.07.20 |
JS, 백준 2884 번: 알람 시계 (0) | 2021.07.20 |
14681 사분면 고르기 : JavaScript, module (0) | 2021.07.20 |