배열 예쁘게 출력하기

중괄호 배열을 각 단어와 중괄호가 한 줄에 하나씩 오고 중첩 단계마다 공백 두 칸으로 들여쓰도록 다시 출력합니다.

쉬움3스택시뮬레이션면접 대비아직 제출이 없습니다시간 제한1초메모리 제한64 MB

문제

어떤 프로그래밍 언어에서 배열은 다음과 같이 정의한다.

  • 배열의 시작과 끝은 각각 여는 중괄호 {와 닫는 중괄호 }로 나타낸다.
  • 중괄호 안에는 쉼표로 구분한 값이 0개 이상 들어간다. 마지막 값 뒤에는 쉼표를 붙이지 않는다.
  • 각 값은 단어이거나 또 다른 배열이다. 단어는 영어 소문자로만 이루어진다.
  • 올바르게 정의한 배열의 예로 {}, {a,b,c}, {abc,znj,{novi,niz},pozz}가 있다.

이 언어는 중괄호나 쉼표의 앞뒤에 공백과 줄바꿈을 알맞게 넣지 않아도 오류를 내지 않는다. 값이 이렇게 빽빽하게 붙어 있는 모양이 눈에 거슬려서, 배열을 다음 규칙에 맞게 다시 쓰기로 했다.

  • 배열이 아닌 값, 그리고 배열의 시작이나 끝을 나타내는 중괄호는 각각 한 줄을 차지한다.
  • 쉼표는 바로 앞에 있는 값에 붙여 쓰고, 쉼표 뒤에서 줄을 바꾼다.
  • 배열의 시작을 나타내는 중괄호 다음부터 내용의 들여쓰기가 2칸 늘어난다.
  • 배열의 끝을 나타내는 중괄호 } 앞에서 내용의 들여쓰기가 2칸 줄어든다.

입력

첫째 줄에 문제에서 설명한 배열 SS가 주어진다. 1S15001 \le |S| \le 1500이고, SS는 영어 소문자와 중괄호, 쉼표로만 이루어져 있으며 언제나 올바르게 정의한 배열이다.

출력

모양을 바꾼 배열을 출력한다.

힌트

입력이 {a,b,{c,d},e,{}}인 경우를 따라가 보자. 처음에는 들여쓰기가 없으므로 0이다. 첫 여는 중괄호를 쓴 뒤 줄을 바꾸고 들여쓰기를 2칸 늘린다.

이어서 단어 a와 바로 뒤의 쉼표를 쓰고 줄을 바꾼 다음, 같은 2칸 들여쓰기를 적용한다. 단어 b도 같은 방법으로 쓴다.

세 번째 값은 새로운 배열이다. 이 배열을 XX라고 하자. XX는 여는 중괄호로 시작하므로 줄을 바꾸고 들여쓰기를 2칸 늘린다. 들여쓰기는 이제 모두 4칸이다. 이 들여쓰기로 단어 cd를 각각 한 줄에 쓴다. dXX의 마지막 값이므로 뒤에 쉼표가 없다.

XX의 끝을 나타내는 닫는 중괄호를 쓰기 전에 들여쓰기를 2칸 줄인다. 그 중괄호 뒤에는 쉼표를 쓰고 줄을 바꾼 다음, 바깥 배열의 남은 값을 이어서 쓴다.