시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
중첩된 HTML 테이블로 표현된 화면 배치를, 같은 위치 관계를 유지하는 하나의 HTML 테이블로 바꾸어야 한다.
이 문제에서 다루는 HTML은 매우 작은 부분집합이다. 문서는 <body>로 시작하고 </body>로 끝나며, 그 사이에는 한 줄에 하나씩 테이블이 들어온다. 테이블은 <table>과 </table> 사이에 하나 이상의 행을 가지며, 각 행은 <tr>과 </tr> 사이에 하나 이상의 셀을 가진다. 셀의 내용은 영문자와 숫자로 이루어진 텍스트 하나이거나 또 다른 테이블 하나이다.
일반적인 테이블에서는 위쪽이나 왼쪽의 셀이 여러 칸을 차지하면 그 영역에 해당하는 셀 태그가 생략될 수 있다. 하지만 입력으로 주어지는 배치용 테이블의 셀 시작 태그는 항상 <td>이며, 행 또는 열 병합 속성을 사용하지 않는다. 대신 셀 안에 테이블을 넣어 배치를 만든다.
하나의 테이블 안에서 중첩 테이블은 같은 행에 둘 이상 나타나지 않고, 같은 열에도 둘 이상 나타나지 않는다. 중첩 깊이는 여러 단계가 될 수 있다.
각 입력 테이블을 중첩 테이블이 전혀 없는 하나의 테이블로 변환하라. 필요한 경우 rowspan과 colspan을 추가하여, 원래 중첩 배치와 같은 행과 열의 위치 관계를 표현해야 한다. 셀의 실제 크기나 모양은 고려하지 않는다.
입력은 첫 줄의 <body>로 시작하고, 마지막 줄의 </body>로 끝난다. 그 사이의 각 줄에는 하나의 중첩 테이블 배치가 들어온다.
각 테이블 줄의 길이는 10,000자를 넘지 않는다. 테이블 줄은 <table>, <tr>, <td>, </td>, </tr>, </table>, 그리고 영문자와 숫자로만 이루어진 텍스트 토큰으로 구성되며, 유효한 테이블을 이룬다.
입력 테이블에는 행 또는 열 병합 속성이 없지만 중첩 테이블은 있을 수 있다. 중첩 깊이는 최대 10이다. 평탄화한 결과 테이블은 최소 1행 1열, 최대 100행 100열이다. 각 텍스트 토큰의 길이는 100자를 넘지 않는다.
출력은 첫 줄에 <body>, 마지막 줄에 </body>를 출력한다. 그 사이에는 입력의 각 테이블 줄에 대응하는 평탄화된 테이블을 한 줄씩 출력한다.
출력 테이블은 유효한 테이블이어야 하며, 셀 내용에는 텍스트만 올 수 있고 중첩 테이블은 올 수 없다. 모든 태그는 소문자로 출력한다. 행 또는 열 병합이 필요한 셀은 rowspan="NUMBER", colspan="NUMBER" 형식을 사용하며, 두 속성이 모두 필요하면 이 순서로 출력한다. 속성값이 1이면 해당 속성은 출력하지 않는다.