창 정리

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

요약
아스키 화면에서 제목이 있는 여러 창을 찾아 제목순으로 정렬한 뒤, 좌상단부터 대각선으로 계단식 배치하여 다시 출력하는 문제입니다.
난이도

보통10점 중 6점

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

문제

텍스트 모드 화면에는 여러 개의 창이 놓여 있다. 각 창은 +, -, |, ., 그리고 알파벳 소문자 제목으로만 이루어지며, 형태는 다음과 같다.

+--|abcdef|---+
|.............|
|.............|
|.............|
|.............|
+-------------+

모든 창은 이 형태를 따른다. 창의 가로 길이는 제목을 표시하기에 충분하며, 제목은 윗변에서 정확히 가운데에 놓인다. 양쪽 여백 길이가 같지 않을 때는 오른쪽 여백이 왼쪽보다 하나 더 길다.

스크린샷이 주어진다. 어떤 두 창도 서로 겹치지 않는다. 모든 창을 다음 규칙에 따라 계단식 배치로 다시 정리한 화면을 출력하라.

  1. 각 창의 가로와 세로 크기는 바뀌지 않는다.
  2. 창은 제목의 알파벳 사전순으로 정렬한다.
  3. 정렬된 첫 번째 창의 왼쪽 위 꼭짓점을 화면 전체의 왼쪽 위 꼭짓점에 맞춘다. 이후 창은 순서대로 직전 위치보다 한 칸 오른쪽, 한 칸 아래에 놓는다.

입력

첫째 줄에 화면의 세로 길이 M과 가로 길이 N이 주어진다. (10 <= M, N <= 100) 이어서 M개의 줄에 각각 길이 N인 문자열이 주어지며, 이는 현재 화면의 스크린샷을 나타낸다. 배경은 모두 .으로 표시된다. 모든 창 제목의 길이는 1 이상 10 이하이다. M과 N은 계단식 배치로 모든 창을 다시 놓기에 충분히 크다고 가정해도 좋다.

출력

M개의 줄에 걸쳐 모든 창을 계단식 배치로 정리한 화면을 출력한다.

예제3

  1. 예제 1

    입력
    12 12
    ............
    .+-|ana|-+..
    .|.......|..
    .|.......|..
    .|.......|..
    .+-------+..
    ..+-|jozo|-+
    ..|........|
    ..|........|
    ..|........|
    ..|........|
    ..+--------+
    
    예상 출력
    +-|ana|-+...
    |+-|jozo|-+.
    ||........|.
    ||........|.
    +|........|.
    .|........|.
    .+--------+.
    ............
    ............
    ............
    ............
    ............
    
  2. 예제 2

    입력
    15 22
    ...............+-|a|-+
    .+-|winamp|--+.|.....|
    .|...........|.|.....|
    .|...........|.|.....|
    .|...........|.|.....|
    .|...........|.|.....|
    .+-----------+.|.....|
    ...............|.....|
    +----|kit|----+|.....|
    |.............||.....|
    |.............||.....|
    |.............||.....|
    |.............|+-----+
    |.............|.......
    +-------------+.......
    
    예상 출력
    +-|a|-+...............
    |+----|kit|----+......
    ||+-|winamp|--+|......
    |||...........||......
    |||...........||......
    |||...........||......
    |||...........||......
    |++-----------++......
    |.....|...............
    |.....|...............
    |.....|...............
    |.....|...............
    +-----+...............
    ......................
    ......................
    
  3. 예제 3

    입력
    14 15
    +---|a|---+....
    |.........|....
    |.........|....
    +---------+....
    ...............
    ...............
    +--|ab|---+....
    |.........|....
    |.........|....
    +---------+....
    +--|abc|--+....
    |.........|....
    |.........|....
    +---------+....
    
    예상 출력
    +---|a|---+....
    |+--|ab|---+...
    ||+--|abc|--+..
    +||.........|..
    .+|.........|..
    ..+---------+..
    ...............
    ...............
    ...............
    ...............
    ...............
    ...............
    ...............
    ...............