[백준/node.js] 2588 곱셈

GY·2021년 9월 27일
0

알고리즘 문제 풀이

목록 보기
24/92
post-thumbnail

🎈문제

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

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

입력

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

출력

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

예제 입력 1

472
385

예제 출력 1

2360
3776
1416
181720

🎈풀이

풀이 1 - 실수했다.

사실 인풋받아온 숫자인 b는 문자열을 자르는 split을 사용할 수 없다.
parseInt(input[1].split(''))를 하더라도 parseInt는 첫번째 배열요소만을 반환하기 때문에 모든 값을 숫자형으로 바꿀 수 없다.

또한 각 곱셈의 결과를 구했더라도 합계는 각 자릿수에 10 과 100을 곱해주어야 하기 때문에, sum과 같이 직접 곱해 더해주는 코드는 결국 확장성이 없다. 곱셈해야 하는 자릿수가 늘어나면 대응하기 어렵다.

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');
const a = parseInt(input[0]);
const b = parseInt(input[1]).split('')
let result = []
for(i=2;i>=0;i--){
    result.push(a*b[i])
}

const sum = result[0]+result[1]*10+result[2]*100
console.log(result[0],result[1],result[2],sum)

다른 풀이

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');
const a = parseInt(input[0]);
const b = parseInt(input[1]);

const oneNum = num2 % 10;
const tenNum = Math.floor((num2 % 100)/10);
const hundredNum = Math.floor(num2 / 100);

console.log(num1 * oneNum);
console.log(num1 * tenNum);
console.log(num1 * hundredNum);
console.log(num1 * num2);
profile
Why?에서 시작해 How를 찾는 과정을 좋아합니다. 그 고민과 성장의 과정을 꾸준히 기록하고자 합니다.

0개의 댓글