728x90
코드 힌트
- 문자열 길이 맞추기:
- 두 문자열의 길이를 맞추기 위해 가장 긴 길이에 맞춰 왼쪽에 0을 추가합니다. 이를 위해 String.format()메소드를 사용하여 두 문자열을 동일한 길이로 만듭니다.
- 자리 수 계산:
- 오른쪽 끝에서부터 시작하여 각 자릿수의 합을 계산합니다. 이때, 자릿수 올림을 고려하여 계산합니다.
- 올림 처리:
- 각 자리의 합이 10 이상일 때, 올림을 설정하고 자릿수의 나머지를 계산합니다. 올림이 남아있는 경우에는 마지막에 추가합니다.
- 문자열 결과 변환:
- 각 자릿수의 계산 결과를 StringBuilder에 추가한 후, 최종적으로 문자열을 역순으로 변환하여 반환합니다. 이는 오른쪽에서부터 계산했기 때문에 필요한 과정입니다.
정답은 더보기 클릭
더보기
class Solution {
public String solution(String a, String b) {
// 두 문자열의 길이 중 최대 길이를 계산합니다.
int maxLen = Math.max(a.length(), b.length());
// 두 문자열을 최대 길이에 맞추어 왼쪽에 0을 채워줍니다.
a = LPAD(a, maxLen);
b = LPAD(b, maxLen);
// 결과를 저장할 StringBuilder를 초기화합니다.
StringBuilder sb = new StringBuilder();
// 자릿수 올림(carry)을 위한 변수 초기화
int carry = 0;
// 오른쪽 끝에서부터 각 자리의 합을 계산합니다.
for (int i = a.length() - 1; i >= 0; i--) {
// 각 자리 숫자를 더하고 올림을 포함합니다.
int num = a.charAt(i) - '0' + b.charAt(i) - '0' + carry;
// 자릿수 합이 10 이상이면 올림을 설정하고 자릿수의 나머지를 구합니다.
if (num >= 10) {
carry = 1;
num %= 10;
} else {
carry = 0;
}
// 계산된 숫자를 결과에 추가합니다.
sb.append(num);
}
// 마지막에 올림이 남아있으면 추가합니다.
if (carry == 1) {
sb.append(carry);
}
// 결과를 역순으로 변환하여 문자열로 반환합니다.
return sb.reverse().toString();
}
// 문자열을 지정된 길이까지 0으로 왼쪽 패딩하는 메소드입니다.
static String LPAD(String s, int len) {
// 문자열의 길이가 목표 길이 이상이면 변경하지 않고 반환합니다.
if (s.length() >= len) {
return s;
}
// 필요한 0의 수를 계산하여 왼쪽에 추가합니다.
StringBuilder sb = new StringBuilder();
for (int i = 0; i < len - s.length(); i++) {
sb.append("0");
}
sb.append(s);
return sb.toString();
}
}
728x90
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 정사각형으로 만들기 (0) | 2024.08.13 |
---|---|
[프로그래머스] 무작위로 K개의 수 뽑기 (0) | 2024.08.13 |
[프로그래머스] 배열 만들기 6 (0) | 2024.08.13 |
[프로그래머스] 커피 심부름 (0) | 2024.08.13 |
[프로그래머스] 문자열 묶기 (0) | 2024.08.13 |