아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

UMR의 테트리스 플레이 분석하기

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

요약
테트로미노를 하나 놓기 전과 후의 필드가 주어질 때, 7가지 테트로미노 중 어느 것을 놓을 수 있었는지 판별한다.
난이도

보통10점 중 7점

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

문제

당신은 테트리스 마스터 UMR의 플레이를 따라하기 위해 UMR의 테트리스 플레이 영상을 분석하고 있다.

테트리스의 규칙은 다음과 같다.

  • 게임은 세로 HH칸, 가로 WW칸의 사각 격자 공간 내에서 이루어진다. 이 공간을 “필드”라고 한다.
  • 단위 정사각형 블록 44 개로 이루어진 여러 개의 테트로미노가 순서대로 주어지고, 플레이어는 테트로미노를 조작해서 필드 내의 원하는 곳에 놓는다.
  • 이때, 테트로미노는 회전할 수 있으나 뒤집을 수는 없다. 또한, 현재 필드 내에 있는 블록과 겹치는 곳에 놓을 수는 없으며, 테트로미노를 “공중에” 놓을 수도 없다. 다시 말해, 테트로미노를 한 칸 아래로 이동해도 필드를 벗어나거나 기존 블록과 겹치지 않는다면 그 곳에는 놓을 수 없다.
  • 어떤 테트로미노를 놓은 후에, 완전히 블록으로 가득 찬 가로줄은 모두 지워지고, 해당 가로줄 위쪽에 위치한 블록들이 아래로 이동한다. 이 때 지워진 가로줄의 수만큼 필드의 맨 위쪽에 비어있는 가로줄이 생긴다.

테트로미노는 다음과 같이 77종류가 있으며, 왼쪽부터 순서대로 I, J, L, O, S, T, Z라고 부른다. 테트로미노를 뒤집을 수 없기 때문에 J와 L, S와 Z는 서로 다른 테트로미노이다.

당신은 영상을 분석하던 중, UMR의 플레이가 너무 빨라서 어떤 테트로미노를 놓기 전의 장면과 후의 장면만 찍힌 부분을 발견했다. 그 사이에 지나간 테트로미노는 과연 무엇이었을까?

이 문제에서는 테트로미노를 조작해서 원하는 곳으로 이동하는 과정은 무시하고, 위에서 제시한 조건에 맞는 곳이라면 어디든지 놓을 수 있다고 가정한다. (예제 3 참조)

입력

첫 번째 줄에 필드의 세로 크기 HH와 가로 크기 WW가 공백으로 구분되어 주어진다. (5≤H≤100,0005\le H\le 100\\,000, 5≤W≤105\le W\le 10)

다음 HH개의 줄에 어떤 테트로미노를 놓기 전의 필드의 상태가 주어진다. 각각의 칸에 대해 블록이 있으면 #, 없으면 .으로 주어지며, #로만 이루어진 가로줄이 포함된 입력은 주어지지 않는다.

그다음 HH개의 줄에 테트로미노를 놓은 후의 필드의 상태가 같은 형식으로 주어진다.

출력

77가지 테트로미노 I, J, L, O, S, T, Z 중에서 가능한 종류를 출력한다. 가능한 종류가 여러 개라면 모든 가능한 종류를 알파벳 순으로 공백 없이 출력한다. 가능한 종류가 없다면 X를 출력한다.

예제7

  1. 예제 1

    입력
    5 5
    .....
    .....
    .....
    .....
    .....
    .....
    .....
    .....
    .##..
    .##..
    
    예상 출력
    O
    
  2. 예제 2

    입력
    5 6
    ......
    ......
    ...###
    ...###
    #.....
    ......
    ......
    ......
    ..####
    #.....
    
    예상 출력
    L
    
  3. 예제 3

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

    입력
    6 7
    ##...##
    ...#...
    ..###..
    .#####.
    ..###..
    ...#...
    ...#...
    ...#...
    ..###..
    .#####.
    ..###..
    ...#...
    
    예상 출력
    X
    
  5. 예제 5

    입력
    7 7
    .......
    ..#####
    ..#####
    ..#####
    #####..
    #####..
    #####..
    .......
    .......
    #.#####
    #.#####
    #####..
    #####..
    #####..
    
    예상 출력
    JLT
    
  6. 예제 6

    입력
    5 6
    #....#
    ##.###
    .#..#.
    ###.##
    .#..#.
    ......
    ......
    #....#
    .####.
    .#..#.
    
    예상 출력
    S
    
  7. 예제 7

    입력
    7 7
    .......
    ...###.
    .......
    ####.##
    .......
    ####.##
    ####.##
    .......
    .......
    .......
    .......
    ...###.
    .......
    ....#..
    
    예상 출력
    I