문제
(세 자릿수) × (세 자릿수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2) 위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6) 위치에 들어갈 값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세 자리 자연수가 주어진다.
출력
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
풀이 코드
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
let count = 0;
rl.on('line', function (line) {
count++;
if(count <= 2) {
input.push(Number(line));
}else {
rl.close();
}
});
rl.on('close', function () {
let A = input[0];
let B = input[1];
let firstNum = B % 10;
let secondNum = (B % 100 - B % 10) / 10;
let thirdNum = (B - B % 100) / 100;
let result1 = firstNum * A;
let result2 = secondNum * A;
let result3 = thirdNum * A;
let result4 = result3 * 100 + result2 * 10 + result1;
console.log(result1);
console.log(result2);
console.log(result3);
console.log(result4);
});
실제 곱셈을 하는 과정을 표현해야하는 문제이다.
사칙연산 알고리즘 단계의 마지막 문제인만큼 계산 과정이 필요하다.
알고리즘을 접한지 얼마 안 된 분들이라면 상당히 어려워 보일 수 있겠으나 조금만 생각하면 과정을 쉽게 도출해낼 수 있다.
B의 각 자릿수를 구한 뒤에 전부 A와 곱하는 것이 핵심.
나머지 연산을 통해 해당 자릿수를 구하기 위한 값만 걸러내었고, 적절하게 자릿수에 맞춰서 1, 10, 100으로 나누어서 firstNum, secondNum, thirdNum 변수에 대입하였다.
그리고 세 변수를 각각 A와 곱하여 그 값을 result1, result2, result3에 대입한다.
마지막으로 출력할 최종 값을 자릿수에 따라 100, 10, 1을 곱하고 result4에 대입한 후 모두 출력.
참고로 최종값은 A * B 연산만 해주어도 정답으로 채점된다.
문제 출처 - https://www.acmicpc.net/problem/2588
'알고리즘 > javascript' 카테고리의 다른 글
백준코드 알고리즘 2884번 '알람 시계' Node.js 풀이 (0) | 2020.01.05 |
---|---|
백준코드 알고리즘 2753번 윤년 계산 Node.js 풀이 (0) | 2020.01.03 |
javascript 백준코드 알고리즘 1001번 문제 A-B (0) | 2020.01.02 |
javascript 백준코드 알고리즘 10171번 '고양이 출력' 문제 (0) | 2020.01.02 |