공부하기/백준

[JavaScript] 백준 풀기 2588 - 곱셈

XEV 2022. 11. 2. 23:35

자바스크립트 백준 2588번

브론즈3

https://www.acmicpc.net/problem/2588

 

2588번: 곱셈

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

www.acmicpc.net

 

 

 

문제 보기

분류: 수학, 사칙연산

 

 

 

문제 풀기

줄 바꿈으로 저장되어있는 두 개의 숫자를 문자로 입력받아 각각 나눠 저장한다.

   const fs = require('fs');
   const [num1, num2] = fs.readFileSync('dev/stdin').toString().trim().split('\n');

 

첫 번째 입력받은 string 타입의 숫자는 integer 형태로 바꾸어 저장한다.

   const num1toInt = parseInt(num1);

 

두 번째 입력받은 string 타입의 숫자는 split('') 으로 한 개씩 나누고 map() 을 사용하여 array 로 저장하되 숫자 변환 Number() 을 하고 저장한다.

   const num2toMapNum = num2.split('').map(Number);

 

배열 형식의 num2toMapNum 는 1의 자리 계산을 먼저 하기 위해 reverse() 함수를 적용해 주고 map(x => x * num1toInt) 으로 일십백 각 자리의 숫자와 곱셈을 하여 array 로 result 에 저장한다.

   let result = num2toMapNum.reverse().map(x => x * num1toInt);

 

result 배열에 입력받은 두세 자리 숫자의 곱을 계산하여 추가시킨다.

   result.push(num1toInt * parseInt(num2));

 

결과를 출력한다.

   console.log(result.join('\n'));

 

 

 

코드 보기

const fs = require('fs');
const [num1, num2] = fs.readFileSync('dev/stdin').toString().trim().split('\n');

const num1toInt = parseInt(num1);
const num2toMapNum = num2.split('').map(Number);

let result = num2toMapNum.reverse().map(x => x * num1toInt);
result.push(num1toInt * parseInt(num2));

console.log(result.join('\n'));

 

 

 

추가 하기

split('\n') 로 줄 바꿈 형식을 입력받을 수 있게 한다.

map(Number) 은 map((str, ind, arr) => Number(str, ind, arr) 와 같아 ['1', '2', '3', '4'] => [1, 2, 3, 4] 처럼 간편하게 변환할 수 있다.