티스토리 뷰
수가 10의 1만승까지 가능하므로 현존하는 정수형 자료형으로는 절대 이 숫자들을 표현할 수 없다.
그렇기 때문에 문자열로 처리를 해야한다.
해결방법
stirng 2개에 각각 숫자로된 문자열을 입력받고나서
맨마지막수부터 더해가면서 올림수(carry)와 결과값(remain)을 구분하면서 계속 더해간다.
두 숫자의 자리수를 맞춰줘야 하므로 자리수가 더 적은쪽의 빈공간을 0으로 채웠다
예를들어 9999와 1을 더하게되면
9999와 0001을 더하게끔 만들었다 . 이렇게 표현해야 반복문을 좀더 쉽게 할 수 있었다.
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 | using namespace std; #include<iostream> #include<string> int main() { string a, b,result; cin >> a >> b; if (a.size() > b.size()) { string c; for (int i = 0; i < a.size() - b.size(); i++) c += '0'; b = c + b; } else { string c; for (int i = 0; i < b.size() - a.size(); i++) c += '0'; a = c + a; } //9999와 1일때 1앞의 3자리에 0 3개를 채우는 문장 int carry = 0; while (a.size()!=0 && b.size() !=0) { int aback = a.back() - '0'; //문자열에서 맨마지막 문자를 숫자로 바꿈 int bback = b.back() - '0'; //마찬가지 int remain = (carry + aback + bback) % 10; //남김수 (9와1을더하면 캐리1 remain 0) carry = (carry + aback + bback) / 10; //올림수 result = (char)(remain + '0') + result; //결과 문자열에 합쳐줌 a.pop_back(); b.pop_back(); } if(carry) //마지막 자리 까지 다더했는데 캐리가 있으면 캐리를 맨앞에 붙여줘야함. result = (char)(carry+'0') + result; cout << result << endl; return 0; } | cs |
'알고리즘' 카테고리의 다른 글
[dp/난이도 하] 2156번 포도주 시식 (0) | 2017.10.06 |
---|---|
[dfs/bfs/체감난이도 하] 2667번 단지번호붙이기 (0) | 2017.10.06 |
[백준/중하] 11053번 가장 긴 증가하는 부분 수열 (LIS,DP,다이나믹 프로그래밍) (1) | 2017.08.31 |
[백준/중상] 9935번 문자열 폭발 문제(스택+문자열 처리) (0) | 2017.08.31 |
[체감난이도/최하] 백준 10808번 알파벳 개수 (0) | 2017.08.28 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- promise
- Next.js
- react
- storybook
- return type
- Action
- useEffect
- hydrate
- type alias
- javascript
- es6
- reflow
- Polyfill
- webpack
- server side rendering
- typescript
- reactdom
- Babel
- rendering scope
- design system
- mobx
- await
- props
- reducer
- computed
- useRef
- react hooks
- state
- async
- atomic design
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함