Menu
CoddyTech

Decode String

보통스택재귀python iconjava iconcpp iconc iconjs icon+10

인코딩된 문자열은 반복되는 텍스트를 k[text]로 나타내며, 이는 text가 연속해서 k번 쓰인다는 뜻입니다. 그룹은 다른 그룹 안에 들어갈 수 있으므로 2[a3[b]]는 abbbabbb를 나타냅니다. 인코딩된 문자열 s를 받아 디코딩된 문자열을 반환하는 함수를 작성하세요.

모든 대괄호 바깥에 있는 문자는 그대로 유지됩니다. 각 반복 횟수는 양의 정수이며 해당 [ 바로 앞에 쓰이고, 숫자는 그 외에는 나타나지 않습니다.

함수

decodeString(s: string) → string
sstring
인코딩된 문자열
반환값string
디코딩된 문자열

제약 조건

  • 1 ≤ s.length ≤ 104
  • s에는 소문자 영어 문자, 숫자, [ 및 ]만 포함되어 있습니다.
  • s는 유효한 인코딩입니다. 모든 [ 뒤에는 개수가 오고 이에 대응하는 ]가 있으며, 비어 있는 대괄호는 없습니다.
  • 모든 개수 k는 1 ≤ k ≤ 300을 만족하며 앞에 0이 오지 않습니다.
  • 괄호는 최대 100단계까지 중첩될 수 있습니다.
  • 디코딩된 문자열의 길이는 최대 5 × 104자입니다.

예제

입력
s = "2[ab]3[c]x"
출력
"ababcccx"
설명
2[ab]는 abab를 만들고 3[c]는 ccc를 만듭니다. x는 모든 괄호 바깥에 있으므로 그대로 복사되어 ababcccx가 됩니다.

lock icon제출 시 숨은 테스트 +22개

challenge icon

후속 질문

디코딩된 문자열은 입력보다 훨씬 길 수 있습니다. 디코딩된 길이가 10^18에 이를 수 있을 때, 디코딩된 문자열을 만들지 않고 위치 i의 문자만 반환하려면 어떻게 해야 할까요?

코드 초기화
def decodeString(s):
    # 여기에 코드를 작성하세요
테스트 케이스

케이스 1

케이스 2

케이스 3

입력

s = "2[ab]3[c]x"

기대값

"ababcccx"