문제
압축을 하는 가장 간단한 방법은 반복되는 부분문자열(sustring)을 하나로 뭉쳐놓는 것이다.
예를 들어 문자열 “ABC”가 “ABCABCABC”와 같이 반복될 경우 이를 [3ABC]로 바꾸어 압축을 하는 것이다.
다시 말해 부분문자열 X가 X...X와 같이 D번 나타날 경우 [DX]로 압축을 할 수 있다.
연속된 부분 문자열은 최대 9회 반복이 가능하다고 가정하자.
이런 방법을 이용해서 문자열을 “CABABABABABABC“, ”C[6AB]C", “C[2[3AB]]C”로 압축할 수 있다.
압축된 문자열이 주어졌을 때, 원 문자열로 복원하는 프로그램을 구현하라.
입력
입력은 20개 이하의 여러개의 테스트케이스로 이루어진다. 테스트 케이스는 한줄에 하나의 문자열로 이루어져 있으며, 문자열은 대문자 알파벳, 그리고 숫자 1이상 9이하의 숫자, 그리고 문자 ‘[’,‘ ’]‘로 이루어져 있다. 문자열의 최대 길이는 50자 이하이다.
문자 #가 한줄에 들어올 경우 입력을 종료한다.
출력
입력된 테스트 케이스에 대한 복원된 문자열을 한줄에 하나씩 출력한다. 복 원되는 문자열의 길이는 1,000문자 이하의 문자이다.
예제
C[6AB]C
C[2[3AB]]C
CO[1N]TEST
[2[2AB]]
AAAAAAAAAAAAAAAAAAAAA
#
CABABABABABABC
CABABABABABABC
CONTEST
ABABABAB
AAAAAAAAAAAAAAAAAAAAA
출처
online contest