배열 예쁘게 출력하기
면접 대비시간 제한1초메모리 제한64 MB
중괄호 배열을 각 단어와 중괄호가 한 줄에 하나씩 오고 중첩 단계마다 공백 두 칸으로 들여쓰도록 다시 출력합니다.
문제
어떤 프로그래밍 언어에서 배열은 다음과 같이 정의한다.
- 배열의 시작과 끝은 각각 여는 중괄호
{와 닫는 중괄호}로 나타낸다. - 중괄호 안에는 쉼표로 구분한 값이 0개 이상 들어간다. 마지막 값 뒤에는 쉼표를 붙이지 않는다.
- 각 값은 단어이거나 또 다른 배열이다. 단어는 영어 소문자로만 이루어진다.
- 올바르게 정의한 배열의 예로
{},{a,b,c},{abc,znj,{novi,niz},pozz}가 있다.
이 언어는 중괄호나 쉼표의 앞뒤에 공백과 줄바꿈을 알맞게 넣지 않아도 오류를 내지 않는다. 값이 이렇게 빽빽하게 붙어 있는 모양이 눈에 거슬려서, 배열을 다음 규칙에 맞게 다시 쓰기로 했다.
- 배열이 아닌 값, 그리고 배열의 시작이나 끝을 나타내는 중괄호는 각각 한 줄을 차지한다.
- 쉼표는 바로 앞에 있는 값에 붙여 쓰고, 쉼표 뒤에서 줄을 바꾼다.
- 배열의 시작을 나타내는 중괄호 다음부터 내용의 들여쓰기가 2칸 늘어난다.
- 배열의 끝을 나타내는 중괄호
}앞에서 내용의 들여쓰기가 2칸 줄어든다.
입력
첫째 줄에 문제에서 설명한 배열 가 주어진다. 이고, 는 영어 소문자와 중괄호, 쉼표로만 이루어져 있으며 언제나 올바르게 정의한 배열이다.
출력
모양을 바꾼 배열을 출력한다.
힌트
입력이 {a,b,{c,d},e,{}}인 경우를 따라가 보자. 처음에는 들여쓰기가 없으므로 0이다. 첫 여는 중괄호를 쓴 뒤 줄을 바꾸고 들여쓰기를 2칸 늘린다.
이어서 단어 a와 바로 뒤의 쉼표를 쓰고 줄을 바꾼 다음, 같은 2칸 들여쓰기를 적용한다. 단어 b도 같은 방법으로 쓴다.
세 번째 값은 새로운 배열이다. 이 배열을 라고 하자. 는 여는 중괄호로 시작하므로 줄을 바꾸고 들여쓰기를 2칸 늘린다. 들여쓰기는 이제 모두 4칸이다. 이 들여쓰기로 단어 c와 d를 각각 한 줄에 쓴다. d는 의 마지막 값이므로 뒤에 쉼표가 없다.
의 끝을 나타내는 닫는 중괄호를 쓰기 전에 들여쓰기를 2칸 줄인다. 그 중괄호 뒤에는 쉼표를 쓰고 줄을 바꾼 다음, 바깥 배열의 남은 값을 이어서 쓴다.