백준 문제 풀이

03. 백준 2588 JavaScript 곱셈 문제 풀이 (쉬운 설명)

프론트개미 2022. 3. 25. 11:22

문제

(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.

(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.

 

 

입력

첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.

 

 

출력

첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.

 

 

예제 입력

472
385

 

 

예제 출력

2360
3776
1416
181720

 

 

문제 풀이

먼저 vscode를 통해 내가 작성한 코드가 정상적으로 작동하는지 확인하기 위해서 로컬연결 경로를 작성해주었다.

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';

* 이 경로 코드는 유튜브 라매개발자님의 영상을 참고하였다.

 

 

fs모듈을 통해서 파일을 읽어왔고, 문자열로 만들고 배열의 형식을 갖추기 위해서 toString( )과 split('\n')을 사용했다.

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().split('\n');

 

 

문제는 472를 3과 8과 5로 각각 곱해준 값과 472 * 385를 곱해준 값을 줄바꿈 시켜서 나열하기를 요구한다.

 

그래서 배열에 있는 '472'를 a라는 변수로 지정하면서 숫자로 변경하고, '385'를 split('')을 사용하여 각각 '3','8','5'로 분리 시켜줬다. 마찬가지로 변수 b도 숫자로 감싸주기 위해서 map(Number)를 사용하였다.

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().split('\n');
let a = parseInt(input[0]);
let b = input[1].split('').map(Number);

 

 

백틱(``)을 사용하여 줄바꿈을 시켜주고, 계산식을 바로 계산 할 수있도록 ${ }로 감싸주며 '3','8','5'의 인덱스번호를 사용해서 각각 '472'와 곱해주었다.

const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
let input = fs.readFileSync(filePath).toString().split('\n');
let a = parseInt(input[0]);
let b = input[1].split('').map(Number);

console.log(`${(b[2]*a)}
${b[1]*a}
${b[0]*a}
${(b.join(''))*a}`);

마지막으로 배열의 원소들을 합쳐주는 join('')을 사용하여 나눠져 있던 '3','8','5'를 '385'로 합쳐주며 b * a의 값을 출력할 수 있게 하면 2588번 문제를 풀 수 있게 된다.

 

vscode를 사용하여 출력된 값