표현식 평탄화

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

다음과 같이 정의된 언어를 생각해 봅시다. 이 언어의 표현식(expression) 은 다음 두 가지 중 하나입니다.

  • 문자: 하나의 소문자 $c$.
  • 묶음: $(e_1\ e_2\ \cdots\ e_t\ n)$ 형태. 0개 이상의 표현식 $e_1, e_2, \ldots, e_t$ 뒤에 자연수 $n$ 이 오며, $t \ge 0$ 입니다.

표현식의 평탄화(flattening) 는 다음과 같이 정의됩니다.

  • 하나의 문자는 자기 자신으로 평탄화됩니다.
  • $(e_1\ e_2\ \cdots\ e_t\ n)$ 형태의 표현식은, 각 $e_i$ 의 평탄화를 순서대로 이어 붙인 문자열을 $n$ 번 반복하여 평탄화됩니다.

즉, $f(e)$ 를 $e$ 의 평탄화라 하고 $+$ 를 문자열 이어 붙이기라 하면, $f\big((e_1\ e_2\ \cdots\ e_t\ n)\big)$ 는 다음과 같습니다.

$$ \underbrace{f(e_1)+f(e_2)+\cdots+f(e_t)}{1} + \underbrace{f(e_1)+f(e_2)+\cdots+f(e_t)}{2} + \cdots + \underbrace{f(e_1)+f(e_2)+\cdots+f(e_t)}_{n} $$

아래 표는 몇 가지 표현식과 그 평탄화 결과를 보여 줍니다.

표현식평탄화 결과
ww
(c 4)cccc
(a (b c 2) 3)abcbcabcbcabcbc

주어진 표현식을 평탄화하는 프로그램을 작성하세요.

입력

입력은 하나 이상의 테스트 케이스로 이루어집니다. 각 테스트 케이스는 문법에 맞게 작성된 표현식 하나이며, $ 문자가 그 표현식의 끝을 나타냅니다. 입력의 마지막 줄은 테스트 케이스가 아니며, $ 문자 하나만으로 이루어집니다(앞뒤에 공백이 있을 수 있습니다).

입력의 모든 표현식은 위에서 정의한 문법에 따라 문법적으로 올바릅니다. 표현식에는 앞, 뒤, 중간에 공백이 있을 수 있으며, 이러한 공백은 모두 무시해야 합니다. 문자와 숫자는 서로 최소한 하나의 공백으로 구분됩니다.

출력

각 테스트 케이스의 표현식에 대해, 그 평탄화 결과를 한 줄에 하나씩 출력하세요. 출력에는 줄바꿈 외의 어떤 공백도 있어서는 안 됩니다.