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

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

펀치 카드

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

요약
R과 C가 주어질 때, R행 C열의 펀치 카드를 ASCII 아트로 출력합니다. 각 칸은 마침표를 대시, 파이프, 플러스 기호로 된 테두리가 감쌉니다.
난이도

쉬움10점 중 2점

유형
구현, 문자열
정답자
아직 제출이 없습니다

문제

비밀 프로그래머 팀이 프로그래밍 언어의 판도를 흔들고 펀치 카드를 다시 쓰이게 하려고 한다. 이들은 펀치 카드로 Python 코드를 작성할 수 있는 새 언어 Punched Card Python을 내놓을 계획이다. 언어의 프로토타입 설계가 나오기 전에 바이럴 캠페인부터 시작할 생각이다. 캠페인에서는 여러 크기의 펀치 카드를 ASCII 아트로 그리려 한다.

펀치 카드의 ASCII 아트는 왼쪽 위 칸을 뺀 R×CR \times C 행렬과 비슷하다. 따라서 칸은 모두 (R⋅C)−1(R \cdot C)-1개다. 각 칸은 마침표(.)를 가운데 두고, 위아래에 대시(-), 좌우에 파이프(|), 모서리에 플러스(+)를 그려 만든다. 인접한 칸은 테두리 문자를 공유한다. 마침표는 맨 윗줄의 칸을 맞추는 데 쓴다.

예를 들어 R=3R=3, C=4C=4인 펀치 카드는 다음과 같다.

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

정수 RR과 CC가 주어지면, 위에서 설명한 펀치 카드의 ASCII 아트를 출력하시오.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 이후 TT개의 줄에 각각 펀치 카드의 행 수 RR과 열 수 CC가 정수로 주어진다.

출력

각 테스트 케이스마다 Case #x:를 한 줄에 출력한다. 여기서 xx는 1부터 시작하는 테스트 케이스 번호다. 이어서 RR행 CC열 펀치 카드의 ASCII 아트를 (2⋅R)+1(2 \cdot R)+1줄에 걸쳐 출력한다.

힌트

예제 1은 문제 설명에 나온 카드다. 예제 2와 3은 추가 예시다. 각 케이스의 출력에는 정확히 R⋅C+3R \cdot C+3개의 마침표가 들어 있다.

예제1

  1. 예제 1

    입력
    3
    3 4
    2 2
    2 3
    
    예상 출력
    Case #1:
    ..+-+-+-+
    ..|.|.|.|
    +-+-+-+-+
    |.|.|.|.|
    +-+-+-+-+
    |.|.|.|.|
    +-+-+-+-+
    Case #2:
    ..+-+
    ..|.|
    +-+-+
    |.|.|
    +-+-+
    Case #3:
    ..+-+-+
    ..|.|.|
    +-+-+-+
    |.|.|.|
    +-+-+-+