시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
NTCIP(National Transportation Communications for ITS Protocol)는 고속 통신에서 메시지를 표현하기 위해 MULTI(Markup Language for Transportation Information) 문자열을 사용한다. MULTI 문자열은 출력할 문자와 출력 형식을 바꾸는 태그로 이루어진다. 태그는 [로 시작해 ]로 끝난다. 문자 [ 자체를 출력하려면 [[를 쓰고, 문자 ] 자체를 출력하려면 ]]를 쓴다. 출력되는 각 문자는 배열의 한 칸을 차지한다.
사용할 수 있는 태그는 다음과 같다.
| 태그 | 설명 |
|---|---|
[nl] | 다음 출력 문자가 나타날 때 새 행을 시작한다. |
[sc<digit>] | 같은 정렬 영역 안에서 인접한 출력 문자 사이에 <digit>개의 공백을 추가한다. |
[/sc] | [sc0]과 같다. 추가 공백을 넣지 않는다. |
[jl2] | 왼쪽 정렬. 첫 문자가 행의 가장 왼쪽 칸에 온다. |
[jl3] | 가운데 정렬. 양쪽 공백 수가 같거나 오른쪽 공백이 하나 더 많다. |
[jl4] | 오른쪽 정렬. 마지막 문자가 행의 가장 오른쪽 칸에 온다. |
[jl5] | 양쪽 정렬. 문자 사이에 같은 수의 공백을 가능한 한 많이 넣고, 남는 공백은 가운데 정렬되도록 양쪽에 배치한다. |
행의 너비가 24칸일 때의 렌더링은 다음과 같다. □는 빈 칸을 뜻한다.
| MULTI 문자열 | 출력 |
|---|---|
[jl2]MESSAGE | MESSAGE□□□□□□□□□□□□□□□□□ |
[jl3]MESSAGE | □□□□□□□□MESSAGE□□□□□□□□□ |
[jl4]MESSAGE | □□□□□□□□□□□□□□□□□MESSAGE |
[jl2][sc2]MESSAGE | M□□E□□S□□S□□A□□G□□E□□□□□ |
[jl5]MESSAGE | □□M□□E□□S□□S□□A□□G□□E□□□ |
[jl2]THIS[jl3]IS A[jl4]MESSAGE | THIS□□□□□□IS A□□□MESSAGE |
태그는 대소문자를 구분하지 않는다. 예를 들어 [nl], [NL], [Nl], [nL]은 모두 같다.
초기 정렬은 왼쪽 정렬이고, 문자 사이 추가 공백 수는 0이다. 현재 정렬과 추가 공백 수는 [nl] 뒤에도 유지된다.
다음 경우에는 TAG CONFLICT 오류가 발생한다.
[jl2] 또는 [jl5]를 현재 행에 이미 출력된 문자가 있을 때 사용한 경우[jl5]가 현재 행에서 사용된 뒤 다른 정렬 태그를 사용한 경우[jl3]을 사용한 경우같은 정렬 태그를 다시 사용하는 것은 충돌이 아니다. 양쪽 정렬에서는 [sc<digit>]와 [/sc]가 무시된다.
한 행에 필요한 칸 수가 너무 많거나, 출력에 필요한 행 수가 너무 많으면 TOO BIG 오류가 발생한다. 왼쪽 정렬과 가운데 정렬, 가운데 정렬과 오른쪽 정렬, 왼쪽 정렬과 오른쪽 정렬이 한 행에 함께 있으면 두 영역 사이에 적어도 한 칸의 공백이 남아야 하며, 그렇지 않으면 TOO BIG이다.
[nl]은 그 뒤에 실제로 출력되는 문자가 나오기 전까지 행을 넘기지 않는다. 허용된 태그가 아닌 태그, 잘못된 태그 형식, 짝이 맞지 않는 괄호는 모두 BAD TAG 오류이다.
MULTI 문자열을 읽어 올바른 메시지 또는 오류 메시지를 출력하는 프로그램을 작성하시오.
첫 줄에 데이터 세트의 수 N이 주어진다. 1 <= N <= 100이다.
이후 N개의 줄에 각각 하나의 데이터 세트가 주어진다. 각 줄은 행 수 R, 열 수 C, 그리고 MULTI 문자열로 이루어진다. 1 <= R <= 25, 1 <= C <= 80이며, MULTI 문자열은 C 뒤에 남은 줄 전체이다.
각 데이터 세트마다 먼저 데이터 세트 번호를 한 줄에 출력한다. 오류가 없으면 그 다음 R개의 줄에 변환된 메시지를 출력한다. 각 메시지 줄은 정확히 C개의 문자여야 한다.
오류가 있으면 메시지 줄 대신 TAG CONFLICT, TOO BIG, BAD TAG 중 해당 오류 메시지 하나를 출력한다. 각 데이터 세트의 출력 뒤에는 빈 줄을 하나 출력한다. 채점 데이터에서 오류가 있는 데이터 세트는 한 종류의 오류만 포함한다.