문자열의 자릿수 계산

1761 단어 theabbieleetcodedsa
숫자와 정수s로 구성된 문자열k이 제공됩니다.
s의 길이가 k보다 크면 라운드를 완료할 수 있습니다. 한 라운드에서 다음을 수행합니다.
  • 첫 번째s 문자가 첫 번째 그룹에 있고 다음k 문자가 두 번째 그룹에 있는 식으로 k 크기의 연속적인 그룹k으로 나눕니다. 마지막 그룹의 크기는 k 보다 작을 수 있습니다.
  • s의 각 그룹을 모든 숫자의 합계를 나타내는 문자열로 바꿉니다. 예를 들어, "346""13"이기 때문에 3 + 4 + 6 = 13로 대체됩니다.
  • 연속 그룹을 병합하여 새 문자열을 형성합니다. 문자열의 길이가 k보다 크면 1 단계부터 반복합니다.

  • 모든 라운드가 완료된 후 s를 반환합니다.

    예 1:

    입력: s = "11111222223", k = 3
    출력: "135"
    설명:
  • 첫 번째 라운드에서는 s를 "111", "112", "222"및 "23"의 크기 3 그룹으로 나눕니다.
    그런 다음 각 그룹의 숫자 합계를 계산합니다: 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:

    입력: s = "00000000", k = 3
    출력: "000"
    설명:
    s를 "000", "000", "00"으로 나눕니다.
    그런 다음 각 그룹의 숫자 합계를 계산합니다: 0 + 0 + 0 = 0, 0 + 0 + 0 = 0, 0 + 0 = 0.
    s는 길이가 k인 "0"+ "0"+ "0"= "000"이 되므로 "000"을 반환합니다.

    제약:
  • 1 <= s.length <= 100
  • 2 <= k <= 100
  • s는 숫자로만 구성됩니다.

  • 해결책:

    class Solution:
        def digitSum(self, s: str, k: int) -> str:
            while len(s) > k:
                nexts = ""
                for i in range(0, len(s), k):
                    nexts += str(sum(int(d) for d in s[i:i+k]))
                s = nexts
            return s
    

    좋은 웹페이지 즐겨찾기