Algorithm_javascript/1. 입출력과 사칙연산

백준 2588번 곱셉 (javascript,node.js)

luminouswy 2023. 5. 10. 15:39
반응형

문제

  • (세 자릿수) × (세 자릿수)는 다음과 같은 과정을 통하여 이루어진다.
    곱셉
    (1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6) 위치에 들어갈 값을 구하는 프로그램을 작성하시오.

입력

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

출력

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

예제입력 1

472
385

예제출력 1

2360
3776
1416
181720

문제풀이

  • 흔히 우리가 곱셉을 구하는 식을 프로그래밍으로 구현하는문제
  • (3), (4), (5) 번은 (2) 번의 385를 하나씩 추출하기 위해서
    Math.floor와 나누기와 나머지를 활용해서 구한 값을 (1) 번에 곱해주었다.
    쉬워 보이지만 처음 했을 때 385를 어떻게 자릿수 별로 분리해야 할지 고민되는 문제
  • (참고) Math.floor(): 소수점 이하를 버림, Math.ceil(): 소수점 이하를 올림, Math.round(): 소수점 이하를 반올림
const fs = require("fs");
const file = process.platform === "linux" ? "dev/stdin" : "./text.txt";
const input = fs.readFileSync(file).toString().trim().split("\n");

//(1)번
const num0 = Number(input[0]);
//(2)번
const num1 = Number(input[1]);

// 385를 10으로 나눈 나머지 = 5
const a = num1 % 10;
// 385를 100으로 나눈 나머지 85를 10으로 나누고 Math.floor()를 사용해서 나머지 제거
const b = Math.floor((num1 % 100) / 10);
//385를 100으로 나눠서 소수점 제거
const c = Math.floor(num1 / 100);

// (3)번
console.log(num0 * a);
// (4)번
console.log(num0 * b);
// (5)번
console.log(num0 * c);

// (6)번
console.log(num0 * num1);