415. Add Strings
Easy
3455574Add to ListShareGiven two non-negative integers, num1 and num2 represented as string, return the sum of num1 and num2 as a string.
You must solve the problem without using any built-in library for handling large integers (such as BigInteger). You must also not convert the inputs to integers directly.
큰 정수(예: BigInteger)를 처리하기 위해
내장 라이브러리를 사용하지 않고 문제를 해결해야 합니다.
또한 입력을 정수로 직접 변환해서는 안 됩니다.
Example 1:
Input: num1 = "11", num2 = "123"
Output: "134"
Example 2:
Input: num1 = "456", num2 = "77"
Output: "533"
Example 3:
Input: num1 = "0", num2 = "0"
Output: "0"
Constraints:
- 1 <= num1.length, num2.length <= 104
- num1 and num2 consist of only digits.
- num1 and num2 don't have any leading zeros except for the zero itself.
내장 된 라이브러리를 사용하지 않는게 문제의 조건이기에 좀더 돌아서 풀어야 한다.
간단한 개념을 숙지하면 쉽게 풀 수 있는 문제이다.
문자형 숫자의 아스키 값을 알 필요가 있다.
'0' 이라는 문자형은 48의 값을 가진다고 해석하면 된다.
그렇다면 '1' 이라는 문자형을 정수형으로 치환하면
49의 값을 가지게 된다 그럼 이 수에 '0'의 값을
빼주면 1이 된다 (49 - 48 = 1) 이런 식으로
문자형 숫자를 정수형으로 바꿀 수 있다.
class Solution {
public:
string addStrings(string num1, string num2) {
string ans="";
int carry =0;
int i = num1.size()-1, j = num2.size()-1;
while(i >= 0 || j >= 0 || carry){
int sum=0;
//숫자의 아스키 값은 48번부터 0~9를 할당하고 있으므로, char형 '1'은 정수값 49를 가진다.
//따라서 0의 아스키 값인 48을 char형의 값에서 빼주면 순수한 숫자를 얻어낼 수 있다.
if(i >= 0) sum+=(int)num1[i]-'0'; i--;
if(j >= 0) sum+=(int)num2[j]-'0'; j--;
sum += carry;
carry = sum/10;
ans.push_back((char)sum%10 +'0');
//나머지 값이니 여긴 0을 더해준다.
}
reverse(ans.begin(), ans.end()); // push_back으로 넣은 값이기에 순서를 뒤집어 주여야한다.
return ans;
}
};
운영중인 카톡방입니다.
https://open.kakao.com/o/gsMhUFie
'LeetCode' 카테고리의 다른 글
387. First Unique Character in a String 문제풀이 (0) | 2022.07.19 |
---|---|
20. Valid Parentheses 문제풀이 (0) | 2022.07.13 |
125. Valid Palindrome 문제 (0) | 2022.07.10 |
796. Rotate String 문제 (0) | 2022.07.07 |
28. Implement strStr() c++ (0) | 2022.07.07 |
댓글