2826 : 블록 (METEOR)
- 제한시간
- 1000 ms
- 메모리제한
- 128 MB
- 해결횟수
- 14 회
- 시도횟수
- 93 회
문제
대형이는 R행 S열의 격자 상에서 블록이 낙하하는 게임을 만들려고 한다.
검은 칸은 땅을 의미하고, 빨간 칸은 블록을 의미한다. 블록에 해당되는 칸들은 한 덩어리를 이루고 있으며, 땅에 해당되는 칸들도 한 덩어리를 이루고 있다. 땅은 움직이지 않지만, 블록은 매 초마다 한 칸씩 아래로 움직인다. 물론 블록 아래에 땅이 있으면 블록은 움직이지 않는다.
위와 같은 경우, 1초 후의 게임판의 상태는 아래와 같다. 시간이 더 지나도 게임판은 아래와 같은 형태이다.
대형이는 문뜩 블록이 다 낙하한 후의 게임판의 상태를 알려고 한다. 허나 격자의 크기가 큰 경우, 블록이 낙하하는 데 많은 시간이 걸리기 때문에 게임판의 상태를 알기 쉽지 않다. 대형이를 도와 충분한 시간이 지난 후 게임판의 상태를 구하는 프로그램을 작성하여라.
입력형식
첫 번째 줄에 게임판의 크기 R, S가 주어진다. (3 ≤ R ≤ S ≤ 3,000)
두 번째 줄부터 R개의 줄에는 게임판의 정보가 주어진다. '.'는 빈 공간, '#'는 땅, 'X'는 블록을 의미한다.
문제를 간단히 하기 위하여, 가장 마지막 줄에는 오직 '#'로만 주어진다. 또, 특정 줄에는 '.'만 있어서 그 위의 줄들에는 '#'가 없고, 그 아래의 줄들에는 'X'가 없음이 보장된다.
출력형식
충분한 시간이 지난 후 게임판의 상태를 출력한다.
입력 예5 6 .XXXX. ...X.. ...... #..### ###### |
출력 예...... .XXXX. ...X.. #..### ###### |
입력 예9 7 XXX.XXX X.XXX.X X..X..X X.....X ....... .#...#. .##.##. .#####. ####### |
출력 예....... ....... ....... ....... XXX.XXX X#XXX#X X##X##X X#####X ####### |