문제설명
소스코드
#include <iostream>
using namespace std;
int main() {
string inputA, inputB;
string tmp = ""; string result = "";
short A, B, digit; bool carry = false;
cin >> inputA >> inputB;
if (inputA.length() < inputB.length()) swap(inputA, inputB);
for (int i = 0; i < (inputA.length() - inputB.length()); ++i) tmp += "0";
inputB = tmp + inputB;
for (int i = inputA.length() - 1; i >= 0; --i)
{
A = inputA[i] - '0'; B = inputB[i] - '0';
digit = A + B;
if (carry == true) { digit += 1; carry = false; }
if (digit > 9) carry = true;
result += digit % 10 + '0';
}
if (carry == true) result += "1";
for (int i = 0; i < result.length(); ++i)
{
cout << result[result.length() - 1 - i];
}
}
풀이
- C계열 언어에선 브론즈5 문제가 절대 아님.
- inputA와 inputB의 길이중 inputB의 길이가 더 크다면 둘의 내용을 바꾼다(swap)
- inputA와 inputB의 길이 차이만큼 tmp에 "0"을 추가한다. (자리수 맞추기 ex) 1234와 0001)
- inputB = tmp + inputB (자리수 맞추기 ex) 1234와 0001)
- inputA와 inputB의 1의 자리수를 A와 B로 설정(- '0'을 함으로 to_string함수를 안써도 된다.)
- 올림수가 있으면 digit을 1올린다.
- digit이 9 초과이면 올림수가 있음을 표시한다.
- result에 digit의 1의자리만 추가한다. (+ '0'을 함으로 to_string함수를 안써도 된다.)
- for문 밖에서 올림수가 있는지 검사한다. 올림수가 있으면 "1"을 추가한다.(30+70 = "00" + "1")
- result를 뒤집어서 출력한다.
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[C++] 백준 9단계 - 2501번 문제 (약수 구하기) (0) | 2023.05.11 |
---|---|
[C++] 백준 9단계 - 5086번 문제 (배수와 약수) (0) | 2023.05.10 |
[C++] 백준 10단계 - 27323번 문제 (직사각형) (0) | 2023.05.09 |
[C++] 백준 8단계 - 2869번 문제 (달팽이는 올라가고 싶다) (0) | 2023.05.08 |
[C++] 백준 8단계 - 2292번 문제 (벌집) (0) | 2023.04.25 |