일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- C++
- ros
- 리눅스
- 데이터 베이스
- ubuntu
- 환경설정
- 우분투
- 그랑사가
- 반복문
- 오늘도 우라라
- install opencv-4.4.0 on ubuntu 22.04
- 오늘도 우라라 펫 공략
- MSG
- 토픽
- 마리아 DB
- 프로그래밍
- C언어
- Subscribe
- 등차수열
- 오늘도 우라라 펫
- mysql
- topic
- 기초
- Linux
- mariaDB
- 오늘도 우라라 공략
- publish
- JungOl
- LeetCode
- while
- Today
- Total
하루의 쉼터
[BAEKJOON] 2588. 곱셈 본문
Title :
2588. 곱셈
Quest :
(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.
(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.
Input :
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.
Output :
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
example :
input
472
385
output
2360
3776
1416
181720
Limited-time :
1 초
Limited-space :
256 MB
* 본문에서는 문제를 해결하는 것과 몇째 자리의 수가 오더라도 풀도록 해결하였다.
* 문제에서는 세자리 * 세자리로 지정되어 있어 예외처리가 필요없었으나 속도 향상을 위해 a or b 가 0이면 0으로 리턴하였다.
전체 FlowChart :
Start Class :
class cl_solution{
public :
void fn_run(int a, int b);
};
cl_solution.h
#include <iostream>
class cl_solution{
public :
void fn_run(int a, int b);
};
cl_solution.cpp
#include "cl_solution.h"
void cl_solution::fn_run(int a, int b){
int result = 0, cnt=1;
if (a == 0 || b == 0) {
std::cout << "0" << std::endl;
}
while (b > 0) {
result+=((a* (b % 10))*cnt);
std::cout << (a * (b % 10))<<std::endl;
b /= 10;
cnt *= 10;
}
std::cout << result << std::endl;
}
main.cpp
#include"cl_solution.h"
int main() {
cl_solution* sol = new cl_solution();
int a = 0, b = 0;
std::cin >> a;
std::cin >> b;
sol->fn_run(a,b);
delete sol;
return 0;
}
코드 분석 :
1. a or b 가 0인지 판단
if (a == 0 && b == 0) {
std::cout << "0" << std::endl;
}
2. 동작
int result = 0, cnt=1;
while (b > 0) {
result+=((a* (b % 10))*cnt);
std::cout << (a * (b % 10))<<std::endl;
b /= 10;
cnt *= 10;
}
문제에서는 472 * 385*1 이는 472*5 + 472*8*10 + 472*3*100과 같다.
즉 b의 자리수 만큼 돌 것이며, 10^n 을 곱하여 더해준 값과 같다.
1,10,100을 체크 하기 위하여 cnt를 사용하였다.
Baekjoon :
https://www.acmicpc.net/problem/2588
Github :
https://github.com/Anchangun/BaekJoon/tree/main/Question/Math/Calculation/2588.%20%EA%B3%B1%EC%85%88
'Coding Test > BaekJoon' 카테고리의 다른 글
[BAEKJOON] 1065. 한수 - Feat. C++ (0) | 2021.10.30 |
---|---|
[BAEKJOON] 4344. 평균은 넘겠지 (0) | 2021.10.24 |
[BAEKJOON] 1100. 더하기 사이클 (0) | 2021.10.17 |
[BAEKJOON] 10871. X보다 작은 수 (0) | 2021.10.11 |
[BAEKJOON] 2884. 알람 시계 (0) | 2021.10.11 |