기름 해류

면접 대비

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

요약
오염된 각 칸이 해류의 세기만큼 해당 방향으로 기름을 퍼뜨린다고 할 때, t단계 뒤 격자에서 기름에 오염된 칸을 출력한다.
난이도

보통10점 중 4점

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

문제

기름 유출 같은 사고의 큰 문제점 중 하나는, 기름이 유출된 자리에 가만히 머무르지 않는다는 것이다. 만약 파열된 유정 바로 위에 기름 구름이 뭉쳐 있기만 한다면, 그것만으로도 큰 문제이긴 하지만 훨씬 치우기 쉬울 것이다. 그러나 실제로는 바람과 파도, 해류 때문에 기름이 물속과 수면 위로 함께 퍼져 나간다. 기름이 수백 제곱마일을 덮게 되면 정화하기가 훨씬 어려워진다. 여기서는 간단한 모형을 사용해, 해류 때문에 기름으로 덮이게 되는 영역의 넓이를 계산한다. 문제를 단순화하기 위해 2차원 평면의 유한한 영역만 고려하며, 그 영역을 벗어난 기름은 다시 돌아오지 않는다고 가정한다.

해류 정보는 다음과 같은 형태로 주어진다. 2차원 격자의 각 칸에는 해류의 세기(00부터 44까지)와 방향(N, S, E, W)이 적혀 있다. 예를 들어 어떤 칸이 2N이라면, 그 칸이 기름으로 오염된 뒤 한 시간 단계 안에 그 칸의 바로 북쪽 두 칸도 함께 오염된다는 뜻이다. 일반적으로, 세기가 ss이고 방향이 dd인 오염된 칸은 다음 시간 단계에 방향 dd로 11칸부터 ss칸까지의 모든 칸을 오염시킨다. 기름이 처음 유출되는 칸의 좌표와 시뮬레이션할 시간 tt가 주어질 때, tt번의 시간 단계가 지난 뒤 기름이 퍼진 지도를 출력하여라.

여기서 N은 북쪽(행 번호가 감소), S는 남쪽(행 번호가 증가), E는 동쪽(열 번호가 증가), W는 서쪽(열 번호가 감소)을 뜻한다. 격자 밖으로 퍼져 나간 기름은 사라지며 다시 돌아오지 않는다.

입력

첫 번째 줄에 데이터 집합의 개수 KK가 주어진다. 이어서 KK개의 데이터 집합이 각각 다음 형태로 주어진다.

각 데이터 집합의 첫 줄에는 다섯 정수 x,y,x0,y0,tx, y, x_0, y_0, t가 주어진다. 1≤x,y≤1001 \le x, y \le 100은 지도의 너비와 높이이다. 1≤x0≤x1 \le x_0 \le x, 1≤y0≤y1 \le y_0 \le y는 기름 유출이 시작되는 칸의 좌표이다. 0≤t≤1000 \le t \le 100은 시뮬레이션할 시간이다.

그 다음 yy개의 줄이 주어지며, 각 줄은 2x2x개의 문자로 이루어진다. ii번째 줄의 2j−12j-1번째와 2j2j번째 문자는 위치 (j,i)(j, i)의 해류를 나타낸다. 앞 문자(00부터 44까지의 숫자)는 해류의 세기이고, 뒤 문자(N, S, E, W 중 하나)는 해류의 방향이다.

출력

각 데이터 집합에 대해, 먼저 그 번호 xx(1부터 시작)를 사용하여 Data Set x:를 한 줄에 출력한다. 이어서 tt번의 시간 단계가 지난 뒤의 기름 지도를 출력한다. 지도는 각 줄이 xx개의 문자로 이루어진 yy개의 줄이다. ii번째 줄의 jj번째 문자는, 해당 칸이 기름에 닿지 않았으면 마침표(.), 닿았으면 X이다. 연속한 두 데이터 집합 사이에는 빈 줄을 하나 출력한다.

예제3

  1. 예제 1

    입력
    1
    15 7 8 4 5
    2W2S2W2S4W1S2W2W2S0E2S4E2S2E2S
    0E0E0S0N0S2E1E1N0E0W0S0N0E0S0N
    0E0E0S0N0S0E0E1E4S0W0S0N0E0S0N
    4W4W4W4W4W4W4W4N4E4E4E4E4E4E4E
    4W4W4W4W4W4W4W4W3E3E3E3E3E3E3E
    4W4W4W4W4W4W4W4W2E2E2E2E2E2E2E
    4W4W4W4W4W4W4W4W4W4E4E4E4E4E4E
    
    예상 출력
    Data Set 1:
    XXXXXXXX.......
    .X.X.XXX.......
    .X.X...XX......
    .......XXXXXXXX
    ........XXXXXXX
    ........XXXXX..
    XXXXXXXXX......
    
  2. 예제 2

    입력
    1
    3 3 2 2 0
    0N0N0N
    0N0N0N
    0N0N0N
    
    예상 출력
    Data Set 1:
    ...
    .X.
    ...
    
  3. 예제 3

    입력
    1
    5 1 1 1 1
    3E0E0E0E0E
    
    예상 출력
    Data Set 1:
    XXXX.