코딩테스트 풀이/JAVA
[LeetCode/Easy] 415. Add Strings
무지맘
2023. 5. 19. 12:27
1. Input
1) String num1
2) String num2
2. Output
1) num1과 num2의 합을 문자열로 반환
- BigInteger와 같은 빌트인 라이브러리 사용 금지
3. Constraint
1) 1 <= num1.length, num2.length <= 10^4
2) num1과 num2는 숫자로만 이루어져 있다.
3) num1과 num2에는 불필요한 0은 없다.
4. Example
Input: num1 = "11", num2 = "123" -> Output: "134"
Input: num1 = "456", num2 = "77" -> Output: "533"
5. Code
1) 첫 코드(2023/05/19)
class Solution {
public String addStrings(String num1, String num2) {
Stack<Integer> stack = new Stack<>();
int carry = 0, i1 = num1.length()-1, i2 = num2.length()-1;
while(i1>=0 || i2>=0){
int x = carry;
if(i1>=0)
x += num1.charAt(i1--)-'0';
if(i2>=0)
x += num2.charAt(i2--)-'0';
if(x>=10){
carry = 1; x -= 10;
} else
carry = 0;
stack.push(x);
}
StringBuilder sb = new StringBuilder();
if(carry==1)
sb.append(1);
while(!stack.empty())
sb.append(stack.pop());
return sb.toString();
}
}
2) 1번이 너무 구려서 다시 해본 코드(2023/05/19)
class Solution {
public String addStrings(String num1, String num2) {
StringBuilder sb = new StringBuilder();
int carry = 0, i1 = num1.length()-1, i2 = num2.length()-1;
while(i1>=0 || i2>=0){
int x = carry;
if(i1>=0)
x += num1.charAt(i1--)-'0';
if(i2>=0)
x += num2.charAt(i2--)-'0';
if(x>=10){
carry = 1; x -= 10;
} else
carry = 0;
sb.append(x);
}
if(carry==1)
sb.append(1);
return sb.reverse().toString();
}
}
- 성능이 압도적으로 좋아졌다.