구역 채우기

시간 제한1초메모리 제한128 MB

요약
방향 문자열로 영역 경계를 추적해 배열 밖 이탈, 닫힘 여부, 겹침을 검사한 뒤 각 경계 내부를 해당 문자로 채우는 프로그램을 작성합니다.
난이도

보통10점 중 6점

유형
시뮬레이션, 구현, 배열
정답자
아직 제출이 없습니다

문제

구역의 경계가 여러 개 주어진다. 각 구역의 경계와 그 내부를 해당 알파벳으로 채워, 완성된 격자를 출력하는 프로그램을 작성하시오.

입력

첫 줄에 테스트 케이스의 개수가 주어진다.

각 테스트 케이스의 첫 줄에는 행의 개수 R, 열의 개수 C, 구역의 개수가 주어진다. 행 번호는 위에서부터 1, 열 번호는 왼쪽에서부터 1로 센다. 행은 최대 47행, 열은 최대 63열이다.

이어서 각 구역의 설명이 두 줄씩 주어진다. 첫 줄에는 그 구역을 채울 알파벳, 경계선이 시작하는 행 번호와 열 번호, 경계선의 길이가 주어진다. 경계선의 길이는 적어도 2이다. 구역을 나타내는 알파벳은 서로 중복되지 않는다. 다음 줄에는 경계선을 나타내는 방향 문자열이 주어진다.

방향 문자는 현재 칸을 기준으로 다음 위치를 뜻한다.

H A B
G   C
F E D

방향 문자열은 시작 칸에서 출발해 경계선을 시계 방향으로 따라가며 주어진다.

출력

각 테스트 케이스마다 R개의 줄에 C개의 문자를 출력한다. 구역에 포함되는 칸은 그 구역의 알파벳으로, 어떤 구역에도 포함되지 않는 칸은 마침표(.)로 출력한다.

아래 오류가 발생하면, 완성된 격자를 출력하기 전에 발생한 순서대로 한 줄에 하나씩 출력한다. 아래의 A와 B는 실제 구역 알파벳으로 바꾸어 출력한다.

  1. 경계선이 배열 밖으로 나가면 다음 줄을 출력한다.
REGION A GOES OUTSIDE THE ARRAY
  1. 경계선이 시작 칸으로 돌아오지 않아 닫히지 않으면 다음 줄을 출력한다.
REGION A BOUNDARY IS NOT CLOSED
  1. 구역 B의 경계가 이전에 채워진 구역 A와 겹치면 다음 줄을 출력한다.
REGION B BOUNDARY INTERSECTS REGION A

테스트 케이스 사이에는 빈 줄을 하나 출력한다.

예제1

  1. 예제 1

    입력
    2
    20 40 4
    B 3 21 22
    CCDDDCBBBCCFFFFFGHHHHH
    C 5 8 36
    CCDCDDDEDEEFEFFFGFGGHGHHHAHAABABBBCB
    D 10 24 38
    CCCCCCEEEGGFEDCCEEEGGGGGGAAACCBAHGGAAA
    A 2 2 3
    CEH
    10 20 4
    A 4 6 10
    GGAAACCEEE
    B 6 16 30
    CCCCCCCCCCCCEEEGGGGGGGGGGGGAAA
    C 5 6 10
    CCCCDDFFFG
    D 6 2 10
    AAACCEEEGG
    
    예상 출력
    ........................................
    .AA.....................................
    ..A.................BBB......BBB........
    .....................BBB....BBB.........
    .......CCC............BBB..BBB..........
    .....CCCCCCC...........BBBBBB...........
    ....CCCCCCCCC...........BBBB............
    ...CCCCCCCCCCC...........BB.............
    ..CCCCCCCCCCCCC.........................
    ..CCCCCCCCCCCCC........DDDDDDD..........
    .CCCCCCCCCCCCCCC.......DDDDDDD..........
    .CCCCCCCCCCCCCCC.......DDDDDDD..........
    .CCCCCCCCCCCCCCC.......DDDDDDD..........
    ..CCCCCCCCCCCCC...........D.............
    ..CCCCCCCCCCCCC...........D.............
    ...CCCCCCCCCCC.........DDDDDDD..........
    ....CCCCCCCCC..........DDDDDDD..........
    .....CCCCCCC...........DDDDDDD..........
    .......CCC.............DDDDDDD..........
    ........................................
    
    REGION B GOES OUTSIDE THE ARRAY
    REGION C BOUNDARY IS NOT CLOSED
    REGION D BOUNDARY INTERSECTS REGION A
    ...AAA..............
    ...AAA..............
    ...AAA..............
    ...AAA..............
    ....................
    ....................
    ....................
    ....................
    ....................
    ....................