[JS][백준]15552_빠른 A+B
Algorithm/BaeKJoon

[JS][백준]15552_빠른 A+B

문제 번호

 

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