반응형
문자열 다루는 문제였습니다.
풀이방법
정답 변수에 O(N^2)의 시간복잡도로 모든 조합을 곱한 뒤 더해주면 됩니다. 1만자리까지 곱의 결과를 더하므로 int범위를 초과할 수 있기 때문에 ans의 자료형을 long long으로 해주시면 됩니다.
예를 들어 a,b string이 1만자리라면 나올 수 있는 경우의 수가 1만 * 1만 = 1억개가 됩니다. 따라서 a = "9999999..."
b = "9999999..." 식으로 되어 있다면 81 * 1억 81억이 되므로 int범위인 21억을 초과합니다.
Code
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll ans;
string a, b;
int main(){
cin >> a >> b;
for(int i = 0; i < a.size(); i++)
for(int j = 0; j < b.size(); j++)
ans += (a[i] - '0') * (b[j] - '0');
cout << ans <<'\n';
}
'Algorithm > String' 카테고리의 다른 글
(C++) - 백준(BOJ) 1371번 : 가장 많은 글자 답 (0) | 2021.02.09 |
---|---|
(C++) - 백준(BOJ) 4388번 : 받아올림 답 (0) | 2021.02.06 |
(Javascript) - 프로그래머스(2019 KAKAO BLIND) : 오픈채팅방 답 (0) | 2021.01.26 |
(Python) - 백준(BOJ) 12780번 : 원피스 답 (0) | 2021.01.25 |
(C++) - 백준(BOJ) 12605번 : 단어순서 뒤집기 답 (0) | 2021.01.25 |