코딩테스트/백준_브론즈 [C++][백준 10757] 큰 수 A+B - [문제] https://www.acmicpc.net/problem/10757 10757번: 큰 수 A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net [문제 풀이] 큰 수 계산은 숫자로만 보면 너무나도 커지기에 string을 이용해서 계산을 한다. 코드가 좀 더러워졌기에 다음엔 조금 더 깨끗하게 짜는걸 연습하자. 두 string의 길이를 일치시키기 위해 더 짧은 string의 앞에 '0'을 붙인다.(9~15) string을 뒤에서부터 앞으로 오면서 만약 크기가 10보다 크다면 앞의 자리수를 1올려주자.(24~32) 가장 앞에수를 구하기 위해서는 [0]이 되니 만약 해당 계산식에서 그대로 이루어질시 overflow가 일어나므로 따로 계산해주자.(35~40) [코드] 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 #include<iostream> #include<string> #define endl "\n" using namespace std; void solve(string s1,string s2){ while(s1.length() != s2.length()){ if(s1.length() < s2.length()){ s1 = '0' + s1; } else if(s1.length() > s2.length()){ s2 = '0' + s2; } } string s3 = ""; for(int i = 0;i<s1.length();i++){ s3 = '0' + s3; } for(int i = s1.length()-1;i>=1;i--){ if(s1[i]-'0' + s2[i]-'0' >= 10){ s1[i-1] = s1[i-1] + 1; s3[i] += (s1[i] + s2[i] -'0' - '0')%10; } else { s3[i] += (s1[i] + s2[i] - '0' - '0'); } } if(s1[0] + s2[0]-'0'-'0'>=10){ s3[0] += (s1[0] + s2[0] -'0' - '0') % 10; s3 = '1' + s3; } else{ s3[0] += s1[0] + s2[0] -'0' - '0'; } cout<<s3<<endl; return; } int main(){ string s1,s2; cin>>s1>>s2; solve(s1,s2); return 0; } Colored by Color Scripter cs 공유하기 URL 복사카카오톡 공유페이스북 공유엑스 공유 게시글 관리 구독하기Yoon-1212 Contents 당신이 좋아할만한 콘텐츠 [C++][백준 13458] 시험 감독 2022.09.14 [C++][백준 5522] 카드 게임 2022.09.09 [Swift][백준 1001] A-B 2022.09.06 [Swift][백준 1000] A+B 2022.09.06 댓글 0 + 이전 댓글 더보기