Instruens Fabulam
면접 대비시간 제한1초메모리 제한128 MB
각 열의 정렬 방식을 지정하는 헤더를 읽고 테두리와 열 너비, 정렬을 갖춘 표를 출력한다.
문제
Instruens Fabulam은 라틴어로 "표(또는 차트)를 그린다"는 뜻이며, 이 문제에서 여러분이 할 일이 바로 그것입니다.
주어진 하나 이상의 표 데이터를 정해진 서식에 맞추어, 테두리와 열 정렬을 갖춘 표 형태로 출력하세요.
입력
입력은 하나 이상의 표 설명(table description)으로 이루어지며, 첫 글자가 *인 줄이 나오면 입력이 끝납니다.
각 표 설명은 헤더 줄로 시작합니다. 헤더 줄은 표의 열 개수와 각 열의 정렬 방식을 정의하는 하나 이상의 문자로 이루어지며, 각 문자는 <, =, > 중 하나로 각각 왼쪽 정렬, 가운데 정렬, 오른쪽 정렬을 의미합니다.
헤더 줄 다음에는 각 행에 해당하는 데이터 줄이 최소 2개, 최대 21개 이어집니다. 각 데이터 줄은 &로 구분된, 비어 있지 않은 항목들로 이루어지며, 항목의 개수는 헤더에서 정의한 열의 개수와 같습니다. 첫 번째 데이터 줄은 각 열의 제목이고, 나머지 데이터 줄은 표 본문의 내용입니다.
항목 내부에는 공백이 들어갈 수 있지만, 항목의 맨 앞이나 맨 뒤에는 공백이 오지 않습니다. 문자 <, =, >, &, *는 위에서 설명한 위치를 제외하고는 입력에 나타나지 않습니다.
출력
각 표 설명에 대해 다음 규칙을 지켜 표를 출력합니다.
- 표의 전체 너비는 (줄 끝 문자를 제외하고) 79자를 넘지 않습니다.
- 각 열의 너비는 그 열에서 가장 긴 항목에 맞추고, 열의 내용은 세로 막대
|로 구분합니다. 각 열에서 가장 긴 항목과 이를 감싸는|사이에는 정확히 한 칸의 공백을 둡니다. - 가로선은 밑줄
_이 아니라 붙임표-로 그립니다. 표의 네 바깥 모서리에는@를 놓습니다. 제목 줄과 본문을 구분하는 가로선에서, 열과 열이 만나는 교차점에는+를 놓습니다. - 가운데 정렬 항목을 열 안에 정확히 가운데로 놓을 수 없을 때에는, 남는 한 칸의 공백을 항목의 오른쪽에 둡니다.
입력과 정답 출력은 위의 모든 서식 요건을 만족합니다. 다만 출력에는 두 칸 이상 연속된 공백이 나타날 수 있습니다. 각 줄의 맨 앞과 맨 뒤에는 공백이 없으며, (탭이 아니라) 공백 문자만 사용합니다.