문제 번호
15552번: 빠른 A+B
첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.
www.acmicpc.net
알고리즘 분류
수학, 구현, 사칙연산
문제 풀이
알고리즘은 어렵지 않았지만 테스트케이스 마다 console.log 를 사용해서 출력한다면 시간초과에 걸리는 문제였다.
해당 문제를 해결하기 위해서 다음의 링크를 참고하였다.
글 읽기 - 추가 설명 및 다른 언어 빠른 입출력 방법
댓글을 작성하려면 로그인해야 합니다.
www.acmicpc.net
기본적인 입출력은 동일하다. readline 모듈을 사용한다.
const testline = require('readline');
const rl = testline.createInterface({
input: process.stdin,
output: process.stdout
});
입력을 받을때는 테스트케이스는 한줄에 하나의 숫자만 주어진다는 것을 이용했다.
한줄을 입력받은 input 이라는 배열의 길이가 1이면 테스트케이스로 사용하는 방법을 선택했다.
rl.on('line', (TestN) => {
const input = TestN.split(' ');
if (input.length === 1) {
TestCase = input[0];
}
input 배열의 길이가 1이 아닐때는 숫자 A와 B가 주어진 것이기 때문에 input 배열의 0번 인덱스에 해당하는 값과 1번 인덱스에 해당하는 값을 A와 B로 사용하였다.
else {
var a = parseInt(input[0]);
var b = parseInt(input[1]);
Solution(a, b);
TestCase--;
}
이후에 모든 테스트케이스에 대한 답을 answer 이라는 문자열에 개행문자와 함께 저장한다.
function Solution(a, b) {
answer += a + b + '\n';
}
전체코드
const testline = require('readline');
const rl = testline.createInterface({
input: process.stdin,
output: process.stdout
});
let answer = '';
let input = [];
let TestCase = 0;
rl.on('line', (TestN) => {
const input = TestN.split(' ');
if (input.length === 1) {
TestCase = input[0];
}
else {
var a = parseInt(input[0]);
var b = parseInt(input[1]);
Solution(a, b);
TestCase--;
}
if (TestCase === 0) rl.close();
});
rl.on('close', () => {
console.log(answer);
process.exit();
});
function Solution(a, b) {
answer += a + b + '\n';
}
- 입력을 받으면서 헷깔렷던 내용.
parseInt()함수와 Number()함수의 차이
우선 두 개의 함수 모두 문자열 타입의 숫자를 ‘Number’ 타입으로 바꿔주는 역할을 한다. 가장 흔한 목적은 연산을 위해서이다. 예를 들어서 폼을 통해 사용자로부터 입력받은 숫자 타입의 값은
jamong-icetea.tistory.com
특이사항
C++에서는 정말 쉽게쉽게 입출력을 사용했는데 JS에서는 까다로운 부분이 많이 느껴진다.
아직 익숙하지 않아서라고 생각하고싶다.......
'Algorithm > BaeKJoon' 카테고리의 다른 글
[JS][백준]11021_ A+B - 7 (0) | 2021.07.30 |
---|---|
[JS][백준]2741_N 찍기 (0) | 2021.07.30 |
[JS][백준]8393_합 (0) | 2021.07.29 |
[JS][백준]10950_A+B-3 (0) | 2021.07.29 |
[JS][백준]2739_구구단 (0) | 2021.07.27 |