학습
시험

반복 문자열 압축 해제

난이도
BEGINNER

문제 설명

데이터의 저장 공간을 줄이기 위해 반복되는 문자열 패턴을 간결하게 표현한 압축 문자열이 있습니다. 압축 문자열의 압축 해제 규칙은 아래와 같습니다:

압축 문자열의 압축 해제 규칙

  • 알파벳 소문자로만 이루어진 문자열은 압축이 해제되어도 동일한 문자열이 됩니다.
  • 정수 k(1 ≤ k ≤ 9) 뒤에 한 쌍의 대괄호 [ ]로 문자열이 감싸여져 있으면 압축이 해제되었을 때 감싸여진 문자열을 k 번 반복한 문자열이 됩니다.
  • 둘 이상의 압축 문자열이 나열되어 있으면 압축이 해제되었을 때 각각의 문자열이 압축이 해제된 문자열이 나열된 문자열이 됩니다.

예를 들어, "3[ab]"는 "ababab"으로 압축 해제되고, "2[a2[b]]3[c]"는 "abbabbccc"로 압축 해제됩니다.

압축 문자열 zipped가 주어질 때, 압축을 해제하여 반환하는 solution 함수를 작성하시오.


제한 사항

  • zipped의 길이는 1 이상 100,000 이하입니다.
  • zipped는 유효한 압축 문자열만 입력으로 주어집니다.
  • 압축이 해제된 문자열의 길이는 1 이상 2,000,000 이하인 경우만 입력으로 주어집니다.

예시 테스트케이스 설명

테스트케이스 번호 zipped return
1 "3[ab]" "ababab"
2 "2[a2[b]]3[c]" "abbabbccc"
3 "x2[y3[z]]q" "xyzzzyzzzq"

1번 테스트케이스 설명

  • "3[ab]" → "ababab" 가 됩니다.
  • 따라서 "ababab"를 반환합니다.

2번 테스트케이스 설명

  • "2[b]" → "bb" 가 됩니다.
  • "2[a2[b]]" → "2[abb]" → "abbabb" 가 됩니다.
  • "3[c]" → "ccc" 가 됩니다.
  • "2[a2[b]]3[c]" → "abbabb" + "ccc" → "abbabbccc" 가 됩니다.
  • 따라서 "abbabbccc"를 반환합니다.

3번 테스트케이스 설명

  • "3[z]" → "zzz" 가 됩니다.
  • "2[y3[z]]" → "2[yzzz]" → "yzzzyzzz" 가 됩니다.
  • "x2[y3[z]]q" → "x" + "yzzzyzzz" + "q" → "xyzzzyzzzq" 가 됩니다.
  • 따라서 "xyzzzyzzzq"를 반환합니다.