문제 설명
데이터의 저장 공간을 줄이기 위해 반복되는 문자열 패턴을 간결하게 표현한 압축 문자열이 있습니다. 압축 문자열의 압축 해제 규칙은 아래와 같습니다:
압축 문자열의 압축 해제 규칙
- 알파벳 소문자로만 이루어진 문자열은 압축이 해제되어도 동일한 문자열이 됩니다.
- 정수
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"를 반환합니다.