만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Sirtet

면접 대비

시간 제한2초메모리 제한512 MB

요약
인접한 #칸들은 하나의 물체로 묶이며, 각 물체가 바닥이나 다른 물체 위에 닿을 때까지 아래로 떨어진 뒤의 격자를 출력합니다.
난이도

보통10점 중 5점

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

문제

Sirtet은 제로 플레이어 비디오 게임이다. 게임은 NN행 MM열의 직사각형 격자에서 진행된다. 게임을 시작하기 전에 일부 칸은 빈칸(.)이고 나머지 칸은 채워져 있다(#). 상하좌우로 인접한 채워진 칸은 같은 강체 물체에 속한다. 예를 들어 다음 초기 격자에는 물체가 네 개 있다:

..#.
##.#
.##.
#...
#...

네 물체는 아래와 같다.

##     #    #     #
 ##    #           

게임이 시작되면 모든 물체가 같은 속도로 격자에서 곧장 아래로 떨어진다. 각 물체는 바닥 행에 닿거나, 물체의 일부가 다른 물체 바로 위에 놓일 때까지 계속 떨어지고, 그 순간 멈춘다. 게임이 끝났을 때 격자의 최종 상태는 어떠한가?

입력

첫 줄에는 양의 정수 NN과 MM이 공백으로 구분되어 주어진다 (N⋅M≤106N \cdot M \le 10^6).

이어지는 NN줄에는 각각 MM개의 문자로 격자의 초기 상태가 주어진다. ii행 jj열에 블록이 있으면 해당 문자는 #이고, 없으면 .이다.

출력

NN줄에 걸쳐 각각 MM개의 문자로 격자의 최종 상태를 출력한다. ii행 jj열에 블록이 있으면 #을, 없으면 .을 출력한다.

예제1

  1. 예제 1

    입력
    5 4
    ..#.
    ##.#
    .##.
    #...
    #...
    
    예상 출력
    ....
    ....
    ###.
    ###.
    #..#