문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
숫자로 구성된 문자열 s와 정수 k가 주어진다.
한 라운드는 s의 길이가 k보다 크면 완료된다. 한 라운드는 다음과 같다.
모든 라운드가 끝난 후 s를 반환해라.
#1
Input: s = "11111222223", k = 3
Output: "135"
Explanation:
- 첫 번째 라운드에서, s를 크기 3의 그룹 "111", "112", "222", "23"으로 나눈다.
각 그룹의 합은 1 + 1 + 1 = 3, 1 + 1 + 2 = 4, 2 + 2 + 2 = 6, 2 + 3 = 5로 계산된다.
그래서 s는 첫 번째 라운드 후에 "3" + "4" + "6" + "5" = "3465"가 된다.- 두 번째 라운드에서, s를 "346", "5"로 나눈다.
각 그룹의 합은 3 + 4 + 6 = 13, 5 = 5로 계산된다.
그래서 s는 두 번째 라운드 후에 "13" + "5" = "135"가 된다.s.length <= k라서 답으로 "135"를 반환한다.
#2
Input: s = "00000000", k = 3
Output: "000"
Explanation:
s를 "000", "000", "00"으로 나눈다.
각 그룹의 합은 0 + 0 + 0 = 0, 0 + 0 + 0 = 0, 0 + 0 = 0으로 계산된다.
s는 "0" + "0" + "0" = "000"이고 길이는 k와 같아서, "000"을 반환한다.
class Solution {
public String digitSum(String s, int k) {
while(s.length() > k){
StringBuilder sb = new StringBuilder();
int i = 0;
while(i < s.length()){
int sum = 0;
int repeat = k;
while(i < s.length() && repeat-- > 0){
sum += s.charAt(i) - '0';
i++;
}
sb.append(sum);
}
s = sb.toString();
}
return s;
}
}