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

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

표 그리기

면접 대비

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

요약
행마다 셀 너비가 주어질 때, 세로 막대 위아래 위치에만 '+'가 오도록 표의 구조를 ASCII 문자로 그린다.
난이도

보통10점 중 4점

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

문제

웹 페이지를 표시하는 프로그램을 개발할 때 가장 어려운 작업 중 하나는 표를 올바르게 그리는 것이다. 여러분이 다니는 회사 <<Kozilla>>는 터미널 모드에서 동작하는 새 브라우저 <<Waterrat>>를 개발하려고 하며, 표의 구조를 만드는 부분을 담당할 웹 페이지 렌더링 코어의 일부를 작성해 달라고 요청했다.

여러분이 작성할 부분은 표의 행 수와 각 행의 셀에 대한 정보를 입력으로 받고, 표의 구조를 생성해 표를 화면에 그리는 모듈에 넘겨야 한다.

표는 행으로 이루어지고, 각 행은 하나 이상의 셀로 이루어진다. ii번째 행의 jj번째 셀의 너비는 ai,ja_{i,j}이다.

주어진 표의 매개변수로 그 구조를 기호로 나타낸 그림을 만들어라.

입력

입력 파일의 첫째 줄에는 표의 행 수 nn이 주어진다(1≤n≤1001 \le n \le 100). 다음 nn개 줄에는 표의 각 행에 대한 설명이 주어진다.

각 행의 설명에는 그 행의 셀 수 mim_i와 mim_i개의 정수 ai,1,ai,2,…,ai,mia_{i,1}, a_{i,2}, \dots, a_{i,m_i}(그 행에서 각 셀의 너비)가 주어진다(1≤mi≤101 \le m_i \le 10, 1≤ai,j≤201 \le a_{i,j} \le 20).

출력

표 구조를 기호로 나타낸 그림을 출력 파일에 출력하라.

표의 ii번째 행의 그림은 <<+>>(더하기)와 <<->>(빼기) 문자로 이루어진 가로선 그림으로 시작해야 한다. 그다음에는 공백과 <<|>>(세로줄) 문자를 포함하는 줄이 와야 한다. 줄의 첫 문자는 세로줄이고, 그다음에 ai,1a_{i,1}개의 공백, 그다음에 세로줄, 그다음에 ai,2a_{i,2}개의 공백이 오는 식으로 공백 블록이 모두 mim_i개 있다. 마지막 블록 뒤에는 세로줄이 와야 한다. 표의 마지막 행 뒤에도 가로선 그림이 와야 한다.

가로선 그림에서는 그 위치의 위나 아래에 세로줄이 있으면 <<+>> 문자를 쓰고, 그렇지 않으면 <<->>를 쓴다. 가로선은 다음 줄의 모든 세로줄 문자 위와 이전 줄의 모든 세로줄 문자 아래에 <<+>> 문자가 오도록 가능한 한 짧아야 한다.

예제1

  1. 예제 1

    입력
    4
    3 3 5 1
    1 2
    1 2
    2 5 1
    
    예상 출력
    +---+-----+-+
    |   |     | |
    +--++-----+-+
    |  |
    +--+
    |  |
    +--+--+-+
    |     | |
    +-----+-+