250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 논문리뷰
- SSL
- 분할 정복
- BOJ
- 구현
- 문자열
- 수학
- self supervised learning
- 정렬
- paper review
- Representation Learning
- 이분탐색
- 재귀
- anomaly detection
- 분할정복
- c++
- 백준
- Multi-Scale Patch
Archives
- Today
- Total
갓생살기프로젝트
[백준/BOJ/C++] 1225번 이상한 곱셈 - 문자열 본문
728x90
1. 문제
A*B를 계산하다 지겨워진 형택이는 A*B를 새로운 방법으로 정의하려고 한다.
A에서 한 자리를 뽑고 * B에서 임의로 한 자리를 뽑아 곱한다.
의 가능한 모든 조합 (A가 n자리, B가 m자리 수라면 총 가능한 조합은 n*m개)을 더한 수로 정의하려고 한다.
예를 들어 121*34는
1*3 + 1*4 + 2*3 + 2*4 + 1*3 + 1*4 = 28
이 된다. 이러한 형택이의 곱셈 결과를 구하는 프로그램을 작성하시오.
2. 입력
첫째 줄에 A와 B가 주어진다. 주어지는 두 수는 모두 10,000자리를 넘지 않는다.
3. 출력
첫째 줄에 형택이의 곱셈 결과를 출력한다.
4. 풀이
이 문제는 다양한 방법으로 풀이를 할 수 있겠지만, 쉽게 입력을 받고 쉽게 관리하기 위해서 숫자를 string으로 입력받은 다음 vector에 넣어 계산하는 코드로 작성을 하였다.
다만 vector에 push 해줄 때 string 클래스의 at 함수는 문자로 반환을 하기 때문에 정확한 숫자 값을 넣어주기 위해 '0'을 빼준다.
이 작업만 거쳐주면 조건에 맞체 for문으로 각각 하나씩 곱해서 result 변수에 더해준다.
5. 소스코드
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> A;
vector<int> B;
string num, num2;
cin>>num>>num2;
for (int i = 0; i < num.size(); i++){
A.push_back(num.at(i) - '0');
}
for(int i = 0; i < num2.size(); i++){
B.push_back(num2.at(i) - '0');
}
long long result = 0;
for(int i = 0; i < A.size(); i++){
for(int j = 0; j < B.size(); j++){
result += (A[i] * B[j]);
}
}
cout<<result;
return 0;
}
728x90
'차근차근 알고리즘 > etc.' 카테고리의 다른 글
[백준/BOJ/C++] 2805번 나무 자르기 - 이분탐색 (0) | 2021.02.14 |
---|---|
[백준/BOJ/C++] 1157번 단어 공부 - 문자열 (0) | 2021.02.14 |
[백준/BOJ/C++] 11728번 배열 합치기 - 정렬 (0) | 2021.02.13 |
[백준/BOJ/C++] 1780번 종이의 개수 - 분할 정복 (0) | 2021.02.13 |
[백준/BOJ/C++] 1992번 쿼드트리 - 분할 정복 (0) | 2021.02.12 |